Ich bin neu in Redux Welt und ich versuche, Zeitung App zu machen. Ich arbeite derzeit an der Suchfunktion, wo der Benutzer nach bestimmten Zeitungstiteln suchen kann. Das Problem ist, dass, wenn ich zuerst "a" eintippe, der Zustand "" ist. Und wenn ich zB "b" tippe, zeigt der Staat, dass der Begriff "a" ist, wenn er "ab" sein soll. Ich verwende Redux Chrome Tools, um diesen globalen Zustand zu überprüfen.Redux/React - Suchfeld aktualisiert den Redux-Status nicht sofort
Mein Actioncreator ist wirklich einfach (nur kehrt der Begriff an sie übergeben):
export function search(term) {
return{
type:SEARCH,
term
}
}
Hier ist die Minderer:
const SearchReducer = (state = '', action) => {
switch (action.type) {
case SEARCH:
return action.term;
default:
return state;
}
}
Hier ist die Wurzel Minderer:
/*Application state*/
const rootReducer = combineReducers({
weather: WeatherReducer,
filters: FilterReducer,
articles:ArticleReducer,
search: SearchReducer // this should be 'ab', but is 'a'
});
Das ist wirklich einfache Einrichtung. Hier ist, wie ich mit Redux kommuniziere.
ich mein Material-ui Textfeld haben (ich versuchte, Vanille-Eingabefeld auch)
<TextField style={style.searchWidget.search}
floatingLabelText="Search"
value={this.state.term}
onChange={this._onSearchChange}
/>
, wenn der Benutzer etwas die _onSearchChange func abgefeuert wird.
_onSearchChange(event) {
this.setState({term: event.target.value});
this.props.search(this.state.term);
}
Dies wird den aktuellen Status für diese Suchkomponente festlegen. Dann wird eine Suchaktion ausgelöst, die den globalen Status aktualisiert. Aber funktioniert nicht richtig. Der globale Staat ist immer 1 Schritt zurück.
Irgendeine Idee?
Edit: Es sieht aus wie es ist nicht Redux aber reagieren. Der Komponentenstatus wird nicht sofort aktualisiert. Der korrekte Ausdruck wird an den actionreducer übergeben, so dass es nicht redux ist. Ich habe versucht, dieses.state.term auszudrucken, nachdem ich den Zustand eingestellt habe. Und es sieht so aus, als ob der Status nicht aktualisiert wird.
Danke für den Tipp. Es funktioniert gut :) – onurhb