Ich möchte Funktionen haben, die den aktuellen Zustand erhalten können, um einige Logik damit zu tun, ohne den aktuellen Zustand über Parameter an die Funktion übergeben zu müssen.GETTERS in Redux-Aktionen - React Native
Hier ist mein Beispiel.
In meiner Aktion Datei, die ich habe:
export const addToSearchHistory = (newSearch) => ({type: ADD_TO_SEARCH_HISTORY, newSearch})
export const addToCardHistory = (newCard) => ({type: ADD_TO_CARD_HISTORY, newCard})
Und zum Beispiel würde Ich mag einen „Getter“ Funktion haben, der mir sagt, wenn die „Geschichte Suchen“ 10 Artikel getroffen hat. Also, was ich tat, ist:
export const searchHasMaxHistory =() => (dispatch, getState) => {
var state = getState()
search = state.search
return search.history == 10 ? true : false
}
Und ich binden Sie diese Funktion mit den anderen „echten“ Aktionen mit bindActionCreators:
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({
addToSearchHistory,
addToCardHistory,
searchHasMaxHistory
}, dispatch)
}
Also werde ich wie alle normalen Aktionen zugänglich sein. Es funktioniert gut und macht genau das, was ich will.
Aber die wirkliche Frage ist, ist es Anti-Muster, um es wie eine Aktion zu binden, aber es gibt keine Aktion zurück? Darf ich damit auf Probleme stoßen? Und gibt es dafür eine "richtige" Lösung?
mapDispatchToProps umschließt Ihre Funktionen in Dispatch-Aufrufen. Wenn Ihr Aktionsersteller (searchHasMaxHistory) "search.history == 10? True: false" zurückgibt, wird dieser Rückgabewert ausgelöst. Versand ist nur dazu bestimmt, eine Aktion (einfaches Objekt) zu versenden, die den Status Ihrer Anwendung ändert. In diesem Fall wird es nicht, weil keiner Ihrer Reduzierer eine Aktion behandelt: bool (true/false) –