私は世界を還元して新しく、新聞アプリを作ろうとしています。私は現在、ユーザーが特定の新聞のタイトルを検索できる検索機能に取り組んでいます。問題は、私が最初に 'a'とタイプすると、状態は ''です。そして、例えば「b」と入力すると、状態は「ab」でなければならないという用語が「a」であることが示されます。私はこの世界的な状態を確認するためにレフィックスクロムツールを使用しています。Redux/React - 検索フィールドが還元状態を即座に更新していません
マイActioncreatorは、(それだけに渡された用語を返します)本当に簡単です:ここでは
export function search(term) {
return{
type:SEARCH,
term
}
}
は減速である:ここでは
const SearchReducer = (state = '', action) => {
switch (action.type) {
case SEARCH:
return action.term;
default:
return state;
}
}
は、ルート減速です:
/*Application state*/
const rootReducer = combineReducers({
weather: WeatherReducer,
filters: FilterReducer,
articles:ArticleReducer,
search: SearchReducer // this should be 'ab', but is 'a'
});
これは本当に簡単な設定です。ここで私はreduxと通信しています。
私は私の材料-UIテキストフィールド(私もバニラ入力フィールドを試してみました)
<TextField style={style.searchWidget.search}
floatingLabelText="Search"
value={this.state.term}
onChange={this._onSearchChange}
/>
とき_onSearchChangeのFUNCが発射されたユーザーが何かを持っています。
_onSearchChange(event) {
this.setState({term: event.target.value});
this.props.search(this.state.term);
}
これは、この検索コンポーネントの現在の状態を設定します。次に、グローバル状態を更新する検索アクションをディスパッチします。しかし、正しく動作しません。グローバルな状態は常に1ステップ遅れています。
編集: 還元的ではなく反応するようです。コンポーネントの状態が瞬時に更新されていません。正しい期間は、actionreducerに渡され、reduxの失敗ではありません。状態を設定した後、this.state.termを出力しようとしました。状態が更新されていないように見えます。
チップをありがとう。それはうまく動作します:) – onurhb