我正在学习React JS制作一个简单的待办事项列表,我的部分代码如下:
changeStatus(e, index) {
this.state.tasks[index].status = e.target.value;
this.setState((prevState) => ({
tasks: prevState.tasks
}));
}
正如React留档所说,我们不应该手动更改state
,我们应该调用setState
,所以,我在控制台上收到一个警告说,甚至在手动更改后调用setState
。
我这样做是因为,对我来说,这样做比分离任务
、在我的数组上执行拼接
、使用新值调用设置状态
更为实际。
我的方法有问题吗?您建议如何以高效且不重复的方式更新状态?
您不应该直接改变状态,要做到这一点,请从该状态创建一个新对象,然后更新该对象并将其设置回类似的状态
changeStatus(e, index) {
var tasks = {...this.state.tasks}
tasks[index].status = e.target.value;
this.setState({tasks});
}
如果您想知道什么是{…this.state.tasks}
请检查以下答案:
Reactjs中此语法“{…x}”的含义是什么
但是,您也可以使用ES5
Object.assign()运算符复制状态,如
var tasks = Object.assign({}, this.state.tasks)
试试这个:
changeStatus(e, index) {
const tmp = { ...this.state };
tmp.tasks[index].status = e.target.value;
this.setState(tmp);
}
试图找出以下原因: 日志“未定义”?第一个日志是“buyin”(无论我在框中键入什么),不确定我做错了什么。非常感谢您的帮助! 问候语, 布拉姆
说明 此消息用于确认或取消一个预订单 请求地址 http://api.dc78.cn/Api/bk_state 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 id 预订单编号 state 状态 目前取值有两个:1,确认预定,-1,取消预订 op 操作员 可选 table 预订桌台 可选 返回 status:1-成功,0-失败 请求方式 INI 请求参数 [action] 描述 ac
说明 本协议用于会员卡修改状态,支持停用、作废等状态,支持线上和线下发的卡。 请求地址 http://api.dc78.cn/Api/mb_modify 请求方式 GET POST 请求参数 GET参数 参数名称 必填 描述 范例 mbno 卡号 mbno,id两个参数必须有一个 id 会员id state 状态 1=正常,-1=停用,-2=作废 name 姓名 可选 phone 手机号 可选 p
本协议用于会员卡修改状态,支持停用、作废等状态,支持线上和线下发的卡。 请求参数说明 参数 描述 必填 示例值 类型 最大长度 action 接口参数组 是 object └action 需要调用的接口名称 是 mb_modify string get GET参数组,本组参数需要参与签名 是 object └mbno 会员卡号(mbno,id两个参数必须有一个) 否 15696132602 num
问题内容: 我正在从表单组件获取数据,并尝试使用此数据设置应用程序组件的状态。 但是,state.data是一个空对象,不会更新数据。在设置模型数据是否存在之前,我会控制台记录模型数据。他们是模型中的数据。 问题答案: 是React中的异步调用。因此,您不太可能在下一行获得更新的状态值。要在状态更新成功后检查更新后的值,可以签入回调处理程序。 改变这个 至
我试图使用React Hooks来管理一个简单的文本输入字段和提交输入按钮的状态。输入字段不断验证(现在只是检查长度 我已将参数扩展为setMuffinSettings,以显式返回一个对象,并已确认此返回对象的顺序为:true。因此,问题与setMuffinSettings本身有关,而不是传递给setMuffinSettings的对象不正确。 我还研究了另外两个与React挂钩(特别是挂钩)和“落