这里我遇到了setState()
的小问题。我知道这是一个异步函数。我也使用了SO示例中的一些示例,我在console.log()
中获得了我的值,但这个值在状态中没有更新。
我需要在这里更改什么来获得更新的state()
值。请给我任何建议。
这里在我的代码选项卡更改状态
值应该更新为表单
提交。
//代码
handleOnSubmitJoinUS(e) {
e.preventDefault();
const { name, phone, email, comment, activeTab } = this.state;
if (activeTab == 0 ) {
this.setState({comment: "Message for : Becoming a team member"}, () => {
console.log(this.state.comment);
});
} else if (activeTab == 1) {
this.setState({comment: "Message for : Becoming a Vendor Partner"}, () => {
console.log(this.state.comment);
});
} else {
this.setState({comment: "Message for : Becoming a Designer Associates"}, () => {
console.log(this.state.comment);
});
}
const sendingMsgData = {
name, phone, email, comment
}
//attempt to login
if (sendingMsgData.email && sendingMsgData.name && sendingMsgData.phone != null ) {
this.setState({msg : "Thank you! we recieved your submission successfully, we will surely contact you within 24 hours"});
window.setTimeout(function(){window.location.reload()}, 1000);
}
this.props.sendingConsultation(sendingMsgData);
}
正如您所说,setState是异步的,所以函数的其余部分继续运行,在状态实际上在this.state
中设置之前完成所有消息发送等等。对于您的原始代码,这意味着代码的其余部分应该在setState后回调中。
但是,它看起来根本不需要处于状态,因为它是从状态中派生出来的。activeTab:
handleOnSubmitJoinUS(e) {
e.preventDefault();
const { name, phone, email, activeTab } = this.state;
let comment;
if (activeTab == 0) {
comment = "Message for : Becoming a team member";
} else if (activeTab == 1) {
comment = "Message for : Becoming a Vendor Partner";
} else {
comment = "Message for : Becoming a Designer Associates";
}
const sendingMsgData = {
name,
phone,
email,
comment,
};
//attempt to login
if (sendingMsgData.email && sendingMsgData.name && sendingMsgData.phone != null) {
this.setState({ msg: "Thank you! we recieved your submission successfully, we will surely contact you within 24 hours" });
window.setTimeout(function () {
window.location.reload();
}, 1000);
}
this.props.sendingConsultation(sendingMsgData);
}
如果出于某种原因确实需要它处于状态
,那么可以在最后执行this.setState({comment})
。
我猜这可能与从父级打开有关,但我有其他组件,它们内部的状态发生变化,所以我有点困惑,为什么这个组件不尊重它的新状态。 谢谢
我是一个初学者React开发人员,我对这个特定的代码片段有一个问题。 问题: 虽然我直接复制了虚拟数据的值并将其作为单独的子项呈现,但并不是所有的虚拟数据都被呈现 我特意选择使用useRef而不是useState,因为在用户添加或编辑他们想要的任何链接之后,我想将keyRef发送到NoSQL数据库;然而,当我使用useState()时,它给了我陈旧的状态问题,其中包含所有链接的数组没有不断更新。
问题内容: 我有一段代码 单击“ Hi”消息时,仅组件会继续重新渲染,而组件不会重新渲染。 为什么在状态更改时不重新渲染组件? 我想说,由于它是组件的一个属性而不会发生,但是仍然会被JSX中的组件评估,所以不确定。 完整示例https://codesandbox.io/s/529lq0rv2n(检查控制台日志) 问题答案: 这个问题已经很老了,但是由于您似乎没有得到满意的答案,因此我也会尝试一下。
在父组件中: 我有一个布尔状态: 我将其发送到子组件: 根据布尔值,我希望它呈现不同的组件。
问题内容: 我要说的是今天要学习react和redux,但是我不知道如何在状态更改后强制组件重新渲染。 这是我的代码: 我可以触发更新的唯一方法是使用 在构造函数内部,以便我手动触发组件的更新状态以强制重新渲染。 但是如何链接存储状态和组件状态? 问题答案: 仅当组件的状态或道具发生更改时,组件才会重新渲染。您不是依靠this.state或this.props,而是直接在render函数中获取存储
我只是启动libgdx,这看起来很简单,但我不明白。screen对象中的render方法将调用WorldRenderer中的render方法: //屏幕呈现方法