我有一个改变状态的按钮列表,一个字符串(用于决定是否显示一个模态,作为这个模态的标题)。应该发生什么:
第1点和第3点很好。但2不是。所以我决定在那里放一些console.log。如果我在链接到我的状态的useEffect中登录:每个按钮上的标题状态都会更改,这应该会更改,但它永远不会被清除。
因此,我登录到处理程序函数中(单击按钮时触发):
就这样,对我来说没有任何意义。如果有帮助的话,下面是我代码的一部分:
js prettyprint-override"> const [logsModalTitle, setLogsModalTitle] = useState("");
...
const handlingLogs = (inputClause) => {
console.log("handling logs : ", showLogsModal, logsModalTitle);
if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) {
setLogsModalTitle("");
} else {
setLogsModalTitle(`${inputClause.name}(${inputClause.label})`);
}
};
...
<MyCustomButton
buttonInnerText="ERROR"
buttonSize="medium"
buttonActionFunctionOne={handlingLogs}
buttonActionPropOne={input.clauses[i]}
/>
...
useEffect(() => {
console.log(logsModalTitle);
}, [logsModalTitle]);
在我看来,这确实是奇怪的代码,但这可能行得通:
const handlingLogs = (inputClause) => {
if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) {
setLogsModalTitle("");
setShowLogsModal(false);
} else {
setShowLogsModal(true);
setLogsModalTitle(`${inputClause.name}(${inputClause.label})`);
}
};
您可以只使用一个状态,即showLogsModal=logsModalTitle!=="";
const [logsModalTitle, setLogsModalTitle] = useState("");
const handlingLogs = (inputClause) => {
if (`${inputClause.name}(${inputClause.label})` === logsModalTitle) {
setLogsModalTitle("");
} else {
setLogsModalTitle(`${inputClause.name}(${inputClause.label})`);
}
};
const showLogsModal = logsModalTitle !== "";
我现在正在学习React,但在重新渲染组件时遇到了问题。应用程序。js代码: 问题是不是最新的。它总是弱智,这是以前的状态。我试图调用一个在和的回调中,但是它仍然不起作用,我不知道为什么。
问题内容: 假设我在组件中将状态设置为: 如果在我的代码的其他地方,我有一个包含这些值的键的数组,即,如何循环遍历该数组以找到相应状态值的值? 问题答案: 状态是一个对象 ,因此您可以通过以下方式访问任何值: 使用任何循环等迭代,并通过来访问值,如下所示: 检查以下代码段:
我有一个名为的组件,还有一个子组件名为。智利组件有一个名为的状态。我需要从AvailabiltyCalendar组件访问该状态并获取该状态值。我该怎么做呢。 可用压路机组件 DatePicker组件
问题内容: 所以我有这个: newDealersDeckTotal只是一个数字数组,例如,但是没有给出正确的总数,但是呢?我什至设置了超时延迟,以查看是否可以解决问题。任何明显的还是我应该发布更多代码? 问题答案: 通常是异步的,这意味着在您处于状态时,它尚未更新。尝试将日志放入方法的回调中。状态更改完成后执行:
我在JS对象(不是数组)中有一个