class Example extends React.Component {
constructor() {
super();
this.isChecked = this.isChecked.bind(this);
}
isChecked(ex){
return this.props.defaults && $.inArray(ex, this.props.defaults);
}
render() {
return (
<div className="example">
{this.props.items.map(item => (
var checked = this.isChecked({item.type});
<span key={item.type}>
<input type="checkbox" {checked ? 'checked' : ''} name="example" value={item.type} id={item.type} />
<label htmlFor={item.type}>{item.display}</label>
</span>
))}
</div>
);
}
}
Im obigen Beispiel, ich habe eine Liste der Elemente auf die Komponente this.props.items
und eine Liste der Standardwerte this.props.defaults
geben. Wenn das Element in der Liste der Standardwerte für jedes Element ist, möchte ich seinen Status checked
sein. Lassen Sie das Gesamtdesign gleich, wie kann ich das tun? (Hinweis: Mir ist klar, dass ich die Anwendung neu gestalten kann, um zu vermeiden, dass die Variable in der Map deklariert wird. Das ist nicht die Frage).Bedingtes gesetzt Checkbox Zustand basierend auf Variable in ReactJS
Der obige Code funktioniert nicht (offensichtlich), ich versuche nur, jedem eine Vorstellung davon zu geben, was ich hier versuche. Der Fehler, der gegeben wird, wenn Sie das ausführen, ist etwas wie "unerwartetes Token" an der Stelle, an der "var" deklariert wird.
Danke für den Rat. Der Grund, warum ich das getan habe, war, weil in HTML das bloße Vorhandensein des Wortes "checked" anzeigt, dass die Box überprüft werden sollte; der Wert spielt keine Rolle. Ist das falsch? Aber ich denke, ich müsste die dangerouslySetInnerHtml-Methode verwenden, um die Dinge so zu machen, wie ich es versucht habe. Übrigens, der Rat wird sehr geschätzt. – KyleM
Oh, ich sehe, warum Sie versucht haben, einfach ausgespuckt, checked, aber ja in diesem Fall ist das nicht gültige Jsx-Syntax. React übernimmt diese Optimierung für Sie, Sie werden im DOM "checked = true" nicht sehen. –
Vielen Dank, Ihre Lösung hat funktioniert. Es gab noch ein paar kleinere Fehler, zum Beispiel sollte key = {item.type} key = {item.type + checked} sein, damit reacJS die Liste erneut rendert, wenn sich die standardmäßig markierten Elemente ändern. Offensichtlich konnte man das nicht wissen, da es spezifisch für meine Implementierung ist. Vielen Dank für deine Hilfe! – KyleM