問題は次のとおりです。取得するデフォルトの値は別の場所から渡され、検索は機能しますが、新しい入力を取得した場合のみ私が「ドレス」を渡している場合は、入力の中で何かを変更する前に、私のAPI関数を呼び出すことはありません。反応するES6で最初のAPI呼び出しを設定する方法
setInitialState()のようなものを少し試しましたが、特に目立つことはありませんでした。
私はその後、私の製品を更新handleTermChangeに渡された私の検索バーからonTermChangeを取得しています見ることができるように:[]、私はthis.props.location.queryが必要これが渡された変数であるため、デフォルトの検索語になります。
handleTermChange = (term) => {
const url = `http://localhost:3001/products?title=${term.replace(/\s/g, '+')}`;
request.get(url, (err, res) => {
this.setState({ products: res.body })
});
};
render() {
return (
<div className='col-md-12' style={{ margin: '0 auto' }}>
<div className='row searchPageHeader' style={{ padding: '10px', backgroundColor: '#1ABC9C' }}/>
<SideMenu />
<SearchBar onTermChange={this.handleTermChange}
defaultValue={this.props.location.query}/>
<ProductList products={this.state.products}
onProductSelect={selectedProduct => this.openModal(selectedProduct)}/>
<ProductModal modalIsOpen={this.state.modalIsOpen}
selectedProduct={this.state.selectedProduct}
onRequestClose={() => this.closeModal() }/>
<Footer />
</div>
);
}
コンポーネントがマウントされたときに 'location.query'の値で検索を自動的に実行したいですか? – Chris
はい、自動的に_products_を_location.query_を渡す文字列と同じに設定したいので、私のロケーションクエリは基本的にhandleTermChangeを実行してproductListを更新する必要があります – Sjohansen