私のアプリはサービスによって提供されるすべての本を表示し、特定の本を検索する検索バーを持っています。React - 別の(子ではない)コンポーネントを再販
私は2つの主要なコンポーネント:NavPanel
とMainPanel
を持っています。 NavPanel
には子コンポーネントSearchBar
があり、MainPanel
には子コンポーネントBooks
があります。彼らは直接関連していません。
Books
はすべての書籍を表示し、SearchBar
は特定の書籍を検索します。
私はサービスがブックの配列を提供BooksService
呼ばれている、ともいくつかの方法:あなたがページをロードすると
export default function BooksService() {
return {
reset: function() {
// resets the array
}
getBooks: function() {
return books; // array
},
filterBooks: function(filter) {
books = books.filter(book => book.author.toLowerCase().includes(filter.toLowerCase()) || book.title.toLowerCase().includes(filter.toLowerCase()));
}
}
}
Books
コンポーネントがすべての書籍を取得するためにBooksService().getBooks()
を呼び出します。 SearchBar
コンポーネントで書籍を検索すると、配列を変更するBooksService().filterBooks(filter)
が呼び出されます。
今度はBooks
を再レンダリングしてください。 BooksService().getBooks()
がトリガーされ、変更された配列が取得されます。どうやってやるの?他の一つの成分に影響を与えるために
元のソースを変更しているのはなぜですか?books = books.filter(..)を設定すると、次回getBooksを呼び出すと、最新のフィルタリングされた配列が返されます – erdysson
この例のコードを変更しました。私はオリジナルの配列を格納しており、それは不変です。 –