Hinweis: Ich verwende React Native, aber dies gilt auch für Reactjs. Ich verwende nur zustandslose funktionale Komponenten. Ich möchte so viel wie möglich funktionale Programmierung lernen und verwenden. Bedeutet das im Wesentlichen, dass ich niemals connect()
von react-redux
verwenden kann? Sollte ich meinem App-Design weitere Containerkomponenten hinzufügen? HierReact Redux - Suche nach einem Anwendungsfall für connect()
ist ein Beispiel für meine Komponenten:
export const Height = (props, { store }) => {
const state = store.getState()
return (
<View style={formStyles.container}>
<DimenInput
value={state.get('height').get('height1').toString()}
onChangeText={text => store.dispatch(updateHeight(text, 1))}
/>
<Text style={formStyles.text}>{'&'}</Text>
<DimenInput
value={state.get('height').get('height2').toString()}
onChangeText={text => store.dispatch(updateHeight(text, 2))}
/>
</View>
)
}
Height.contextTypes = {
store: React.PropTypes.object
}
Ich möchte auch alle gängigen redux und reagieren Techniken lernen, die ich in der Branche sehen, so wollte ich mapStateToProps()
und connect()
lernen. Ich begann über diese Funktionen für meine Komponente, um zu versuchen und zu erstellen: Realisierung
const mapStateToProps = (state) => {
return state.get('height').get('height1').toString()
}
const mapDispatchToProps = (dispatch) => {
return {
onHeightChanged: (text) => {dispatch(updateHeight(text, 1))}
}
}
Davor habe ich nicht, diese Funktionen auf dieser staatenlosen Komponente verwenden kann. Ich muss sie auf einem Container-Komponente verwenden, der diese Komponente im Wesentlichen halten würde, aber ich wirklich ein nicht haben, der Behälter dieser Komponente ist:
export const Volcalc =() => {
return (
<View style={styles.container}>
<Text style={styles.text}>HEIGHT</Text>
<Height/>
<Text style={styles.text}>WIDTH</Text>
<Width/>
</View>
)
}
Und dann der Behälter das ist nur:
const App =() => {
return (
<Provider store={store}>
<Volcalc/>
</Provider>
)
}
Die App, die ich mache, ist eine einzige Form - so ist es winzig. In diesem Stadium kann ich keine Situation sehen, in der ich eine Behälterkomponente benutzen müsste. In einer größeren App würde ich gezwungen werden, Container-Komponenten zu verwenden, und dann werde ich die Möglichkeit bekommen, connect()
zu verwenden? Welche Technik ist besser, wenn Sie nur Staatenlose verwenden und einen Container verwenden, der mit connect()
erstellt wurde, wenn es so oder so gemacht werden könnte?
Edit: this egghead lesson tut etwas dazwischen, wo sie haben eine stateless Komponente AddTodo
die dispatch
aus dem Laden verwendet und sie nennen connect()
darauf. Möglicherweise das Szenario, das meinem Anwendungsfall für Height
passen würde, obwohl ich es den vollen Speicher weiterreichen muss, da es store.get
und store.dispatch
verwendet - es sei denn, ich übergebe es den Speicherwert für Höhe statt des vollen Speichers.
Definitiv etwas zu beachten. Vielen Dank. – user2602079