前提・実現したいこと
アイテム名が片仮名のものをページ内を検索する際、
平仮名で検索した場合もヒットする様に片仮名へ変換したいと思っています。
下記のコードでは、
「Uncaught (in promise) TypeError: Cannot read property 'replace' of null」
というエラーで何も表示されません。
searchは文字列で、replaceは使えるかと思っているのですが
問題点をご教授いただければ幸いです。
何卒よろしくお願いいたします。
※他ページ遷移後も検索条件を残しておくため、sessionStorageを使っています。
発生している問題・エラーメッセージ
Uncaught (in promise) TypeError: Cannot read property 'replace' of null
該当のソースコード
vue
1<template> 2 <input type="text" v-model="search" @change="setSessionSearch"> 3 4 <ul> 5 <li v-for="item in searchedItems" v-bind:key="item.id"> 6 <p> {{ item.name }}</p> 7 </li> 8 </ul> 9 10</template> 11 12 13 14<script> 15export default{ 16 data(){ 17 let session_search = sessionStorage.getItem('search'); 18 return{ 19 search: session_search, 20 items:[ 21 { "id": 1, "name": "アアア"}, 22 { "id": 2, "name": "イイイ"}, 23 { "id": 3, "name": "ウウウ"}, 24 ] 25 } 26 }, 27 computed: { 28 searchedItems:function(){ 29 let search = this.search.replace(/[\u3041-\u3096]/g, el => 30 String.fromCharCode(el.charCodeAt(0) + 0x60) 31 ) 32 33 if(search == null){ 34 return this.items 35 } else { 36 return this.items.filter(item => { 37 return item.name.indexOf(search) !== -1 38 }) 39 } 40 } 41 }, 42 methods: { 43 setSessionSearch: function () { 44 sessionStorage.setItem('search', this.search); 45 } 46 } 47} 48 49</script> 50 51 52 53
補足情報(FW/ツールのバージョンなど)
Vue CLI 3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。