React-如何实现复选框
React - How can I implement a checkbox?
我正在创建一个ToDo应用程序来自学React。
为我的任务实现复选框功能的最佳方式是什么?我对它的最佳放置位置以及使用状态感到困惑。
就我的代码而言,复选框不会打开,因为它绑定到我的数据,而不是状态。此外,我是否需要为复选框创建一个新的React类?我感谢你的帮助。
var ToDoContainer = React.createClass({
getInitialState: function(){
return {
name:"Michael",
tasks:[
{task:"Go to the gym", completed:false},
{task:"Do yoga", completed:false},
{task:"Buy groceries", completed:true},
{task:"Get tire fixed", completed:false}
]
}
},
addTask: function(task){
this.setState({
tasks:this.state.tasks.concat(task)
});
},
markComplete: function(task){
console.log('markComplete');
console.log(task);
},
render: function(){
return (
<div>
<h3>Name: {this.state.name}</h3>
<TaskList tasks={this.state.tasks} check={this.markComplete}/>
<AddTask addNew={this.addTask} />
</div>
)
}
});
var TaskList = React.createClass({
handleCheck: function(e){
console.log('check');
this.props.check(e.target);
},
render: function(){
var that = this;
var task = this.props.tasks.map(function(task, index){
return <li key={index} className={task.completed ? "complete" : "incomplete"} >
<input type="checkbox" checked={task.completed} onChange={that.handleCheck} />
{task.task}
</li>
});
return (
<div>
<ul>
{task}
</ul>
</div>
)
}
});
var AddTask = React.createClass({
getInitialState: function(){
return{
newTask:""
}
},
handleChange: function(e){
this.setState({
newTask:e.target.value
});
},
handleSubmit: function(e){
e.preventDefault();
this.props.addNew({task:this.state.newTask, completed:false});
this.setState({
newTask:""
});
},
render: function(){
return (
<div>
<form onSubmit={this.handleSubmit}>
<input type="text" value={this.state.newTask} onChange={this.handleChange} />
<button disabled={this.state.newTask == ""}>Add Task</button>
</form>
</div>
)
}
});
ReactDOM.render(,document.getElementById('app'));
首先在TaskList
组件中,您可以直接使用等道具中的事件
<input type="checkbox" checked={task.completed} onChange={that.props.check} value={task.task} />
和您的Markcomplete方法
markComplete: function(e){
console.log('markComplete');
var TempTask=this.state.tasks;
for(int i=0;i<=TempTask.length;i++)
{
if(TempTask[i].task==e.target.value)
{
if((e.target).checked)
{
TempTask[i].completed=true;
}
else
{
TempTask[i].completed=false;
}
}
}
this.setState({this.state.tasks:TempTask});
},
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 如何实现复选框或面向类别的照片库
- 如何在 emberjs 中使用复选框实现多个过滤器
- 使用 Json 数据源在数据表中实现复选框选择
- 如何为未知数量的复选框实现全选按钮
- 如何在免费的jqGrid 4.13.0中实现单击复选框
- 如何在 jQuery 中的互斥复选框上实现单击事件
- React-如何实现复选框
- javascript实现“;“全选”;复选框在IE中不起作用
- JqGrid复选框字段实现失败
- 如何在php中实现多个复选框
- 如何在knockoutjs中实现复选框依赖关系
- 用javascript在JSP中实现一个全选复选框
- 如何实现渐变效果的CSS复选框
- 3个动态复选框可实现通信
- 在Rails中实现AJAX调用复选框来更新数据库
- 如何实现只有一个复选框被选中的功能到复选框列表