0

fixed-data-tableReact.js コンポーネントであるを使用して、テーブルにデータを入力しています。ただし、この段階ではそれほど重要ではありません。

表には、問題の原因となった検索ボックスがあります。

まず、ここにコードの興味深い部分があります。

for (var index = 0; index < size; index++) {
            if (!filterBy || filterBy == undefined) {
                filteredIndexes.push(index);
            }
            else {

                var backendInfo = this._dataList[index];

                var userListMap = hostInfo.userList;

                var userListArr = Object.values(userListMap);


                function checkUsers(){
                    for (var key in userListArr) {
                        if (userListArr.hasOwnProperty(key) && userListArr[key].text.toLowerCase().indexOf(filterBy) !== -1) {
                            return true;
                        }
                    }
                    return false;
                }


                if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 || backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
                    || backendInfo.userListMap.indexOf(filterBy) !== -1) {
                    filteredIndexes.push(index);
                }

            }
        }

これはレンダリングされ、テーブルに何かを入力すると最後の部分でエラーがスローさnullれ、特定のセルに列が返されます。

問題は、最後の部分を .. に変更すると、コードを機能させることができるということです。

        try {
            if (backendInfo.firstName.indexOf(filterBy) !== -1 || backendInfo.lastName.toLowerCase().indexOf(filterBy) !== -1 ||    backendInfo.countryOrigin.toLowerCase().indexOf(filterBy) !== -1
            || backendInfo.userListMap.indexOf(filterBy) !== -1) {
            filteredIndexes.push(index);
            }
        }
        catch(err) {
            console.log('Exception')
        }

try/catch を使用すると、意図したとおりに 100% 動作し、null を返す indexOf を処理します...しかし、これは適切に処理する方法ではありません。まれな例外として、実際にはバックエンドほどフロントエンドで使用しないでください。

try/catch を使用せずにタイトルのエラーを処理するにはどうすればよいですか?

4

1 に答える 1