Ich versuche, ein div mit CSS und className
s. Ich verwende redux, um den Zustand des boolean zu aktualisieren. Ich kann durch die Redux-Chrom-Erweiterung bestätigen, dass der Zustand ist ändern, aber das div nicht angezeigt wird. Wenn jemand irgendwelche Ideen hat, was falsch ist, lass es mich wissen.Zeigen/Verbergen div mit CSS in React JS/Redux
Komponente:
const ShowHideDiv = (props) => (
<div>
<Button onClick={props.toggleDiv} />
<div className={props.hidden ? style.hidden : style.open}>
<TextInput />
</div>
</div>
);
function mapDispatchToProps(dispatch) {
return {
toggleDiv:() => dispatch(toggleDiv()),
};
}
export default connect(null, mapDispatchToProps)(ShowHideDiv);
actions.js:
const toggleDiv =() => {
return {
type: 'TOGGLE_DIV',
};
};
reducers.js
const toggleDivReducer = (state = { hidden: true}, action) => {
switch(action.type) {
case 'TOGGLE_DIV':
return Object.assign({}, state, {hidden: !state.hidden});
default:
return state;
}
};
style.scss
.hidden {
display: none;
}
.open {
display: inline;
}
Display-Seite
<ShowHideDiv hidden={props.hidden} />
function mapStateToProps({demo}) {
return {
hidden: demo.hidden,
};
}
Ah, ich hätte angeben sollen, dass die Aktion per Knopfklick aufgerufen wird. Ich weiß, dass alles gerufen wird und der Staat sich aktualisiert. Das einzige Problem ist, dass die Komponente niemals angezeigt wird. Wenn ich meinen Standardstatus auf "Versteckt" setze: false wird auch nicht angezeigt. Aktualisierter Beitrag – JLegendre
Ok, aber Sie verwenden Ihre mapStateToProps immer noch nicht mit Ihrer Verbindungsfunktion. Stattdessen übergeben Sie null für den ersten Parameter. Sie sollten diese Funktion anstelle von null übergeben und das sollte es verdrahten. – John
Mein Verständnis ist, dass ich MapStateToProps in der Komponente nicht * haben * sollte, weil ich es im Container mache. Ist das falsch? – JLegendre