Wie übermittle ich eine action
an die reducer
von meiner Komponente?Verbindung zu mapDispatchToProps nicht möglich
Mein Code:
import React, { Component } from 'react';
import { Text, View, Button} from 'react-native';
import { connect } from 'react-redux';
class MyApp extends Component {
render(){
return(
<View>
<Text> {this.props.dataReducer.name} </Text>
<Button
onPress={this.props.setName('newName')}
title="Click to change Name"
color="blue"
/>
</View>
);
}
}
function mapStateToProps (state) {
return {
dataReducer: state.dataReducer
};
};
function mapDispatchToProps (dispatch) {
return {
setName: (name) => {
dispatch({
type: "SET_NAME",
payload: name
})
}
};
};
export default connect(mapStateToProps, mapDispatchToProps)(MyApp)
Die dataReducer:
const initialState = {
name:'fromDataReducer',
number: 545
}
export default function dataReducer (state = initialState, action) {
switch (action.type) {
case "SET_NAME":
return {
...state,
name: action.payload
}
case "resetName":
return {
...state,
name: 'ResetFromDataReducer'
}
default:
return state
}
}
Wenn ich mapDispatchToProps
nicht verbinden, funktioniert die App gut. Aber wenn ich connect
es mit mapStateToProps
, wird die App als leer gerendert. Absolut gar nichts. Und ich bekomme die folgende Warnung nach ein paar Sekunden:
Mein Speicher in index.android.js ist:
const store = createStore(rootReducer);
rootReducer
importiert wird, wo ich combinedReducers habe. Ich glaube nicht, store
ist ein Problem, weil es ohne mapDispatchToProps
funktioniert.
Was mache ich falsch? Bitte helfen Sie.
Das hat geklappt! Was für ein blöder Fehler ich gemacht habe. Also ohne den dicken Pfeil versucht die Funktion auch ohne Klick zu laden? Aber warum war der Bildschirm leer? – Somename
Ja, das Anwenden von Klammern bewirkt, dass eine Funktion ausgeführt wird, sodass das Umbrechen innerhalb einer Funktion bedeutet, dass sie nur ausgeführt wird, wenn die Umbruchfunktion aufgerufen wird. Glücklich, das hat geholfen. –
Durch das Ausführen der Aktion wird der Speicher aktualisiert, wodurch die Komponente erneut gerendert wird. Wenn die Aktion sofort ausgelöst wird, kann dies dazu führen, dass dieser Prozess unbegrenzt wiederholt wird. –