Javascript React-同时设置状态和获取值
我正在用React制作一个ToDo应用程序。我有以下数据:Javascript React-同时设置状态和获取值,javascript,reactjs,Javascript,Reactjs,我正在用React制作一个ToDo应用程序。我有以下数据: getInitialState: function(){ return { name:"Michael", tasks:[ {task:"Go to the gym", completed:false, id:1 }, {task:"Do yoga", completed:false, id:2 }, {task:"Buy
getInitialState: function(){
return {
name:"Michael",
tasks:[
{task:"Go to the gym", completed:false, id:1 },
{task:"Do yoga", completed:false, id:2 },
{task:"Buy groceries", completed:true, id:3 },
{task:"Get tire fixed", completed:true, id:4}
],
numCompleted:null
}
},
如何获得初始状态下显示的numCompleted值?在实例化之前,我无法计算它
谢谢你的帮助。怎么样:
getInitialState: function(){
var tasks = [
{task:"Go to the gym", completed:false, id:1 },
{task:"Do yoga", completed:false, id:2 },
{task:"Buy groceries", completed:true, id:3 },
{task:"Get tire fixed", completed:true, id:4}
];
return {
name:"Michael",
tasks:tasks,
numCompleted:tasks.filter(function(task) {
return task.completed;
}).length
}
},
如果需要,您可以直接计算…您是否可以用以下方式计算:
getInitialState: function(){
var _tasks = [{task:"Go to the gym", completed:false, id:1 },
{task:"Do yoga", completed:false, id:2 },
{task:"Buy groceries", completed:true, id:3 },
{task:"Get tire fixed", completed:true, id:4}];
var completedCount = 0;
for( var i = 0; i < tasks.length; i++ ) {
if ( task[i].completed ) {
completedCount++;
}
}
return {
name:"Michael",
tasks:_tasks,
numCompleted: completedCount
}
getInitialState:function(){
var_tasks=[{task:“去健身房”,completed:false,id:1},
{任务:“做瑜伽”,完成:false,id:2},
{任务:“购买杂货”,完成:true,id:3},
{任务:“修复轮胎”,完成:true,id:4}];
var completedCount=0;
对于(变量i=0;i
},既然这是一个“计算”属性,无论何时状态发生变化,它都会发生变化,为什么不在组件的渲染中这样做呢
getInitialState: function(){
return {
name:"Michael",
tasks:[
{task:"Go to the gym", completed:false, id:1 },
{task:"Do yoga", completed:false, id:2 },
{task:"Buy groceries", completed:true, id:3 },
{task:"Get tire fixed", completed:true, id:4}
]
}
render: function () {
let numCompleted = this.state.tasks.reduce(function (completed, task) {
return completed + task.completed ? 1 : 0;
}, 0);
// render tasks
}
},
当您需要时,为什么不计算numCompleted
?您不必在更新任务的completed
值时进行更新?这似乎是一个不错的解决方案,但我如何才能将numCompleted传递给其他组件?您可以像平常一样将numCompleted
作为道具传递。如果此组件的多个同级/父级组件需要知道numCompleted
,则该状态应保留在其他位置。