OK、これはノブの質問で、おそらく私の鼻の下の答えですが、これを行う方法を理解できないようです。基本的には、ReactでTo-doリストを作成していて、ユーザーが項目を完成したものとしてマークする方法が必要です。React JSのボタンをクリックすると、LI要素が非アクティブ状態に設定されます
私は親コンテナの状態を介して設定しようとしましたが、その状態を要素propsでアクセスしようとしましたが、動作しません。
ここまでは私のコードです。 getInitialState関数、onCompleted、ListContainerの戻り値関数、およびItemを参照してください。
var ListContainer = React.createClass({
getInitialState: function() {
return {
numChildren: 0,
list: [],
disabled: false
};
},
onAddChild: function() {
var inputValue = document.getElementById('itemAdder').value;
var ul = document.getElementById('list');
var newList = this.state.list;
if(inputValue !== '') {
newList.push(inputValue);
ul.style.display = 'block';
}
this.setState({
numChildren: this.state.numChildren + 1,
list: newList
});
},
onDeleteChild: function(index) {
this.state.list.splice(index, 1);
this.setState({
list: this.state.list
});
},
onCompleted: function() {
this.setState({
disabled: true
});
},
render: function() {
var children = [];
for (var i = 0; i < this.state.list.length; i++) {
children.push(<Item key={'item_' + i} number={i} onDeleteChild={this.onDeleteChild} completed={this.state.onCompleted} content={this.state.list[i]}/>);
};
return (
<List addChild={this.onAddChild}>
{children}
</List>
);
}
});
var List = React.createClass({
render: function() {
return (
<div id="listContainer">
<h1 className="no-margins even-padding page-header ">To do list</h1>
<div className="even-padding form-inline">
<input type="text" name="itemAdder" id="itemAdder" className="form-control" placeholder="Enter things that need doing..." />
<button type="button" className="btn btn-primary" onClick={this.props.addChild}>Add item</button>
<ul id="list" className="no-margins list">
{this.props.children}
</ul>
</div>
</div>
);
}
});
var Item = React.createClass({
complete: function() {
this.props.completed;
},
delete: function() {
this.props.onDeleteChild(this.props.number);
},
render: function() {
return (
<li className="clearfix">
{this.props.content}
<div className="pull-right">
<button onClick={this.complete} id="completed" className="btn btn-success btn-xs">✔</button>
<button id="remove" onClick={this.delete} className="btn btn-danger btn-xs">✘</button>
</div>
</li>
);
}
});
var App = React.createClass({
render: function() {
return (
<div id="main" className="page-wrap">
<ListContainer />
</div>
);
}
});
ReactDOM.render(
<App/>,
document.getElementById('app')
);
ご協力いただきありがとうございます。
を作ります各オブジェクトに値とその状態が含まれているオブジェクトを持つ配列。例: 'list:[{value:" foo "、state:0}、{value:" bar "、state:1}]' – Chris
ですが、_value_とは何ですか? –