在这种情况下,我更改选择元素并调用数据更新方法。该方法从状态获取值。但是当数据更新时,状态还没有改变。当您再次调用数据更新时,状态已经更新了如何正确进行更新?
反应成分
const [dataList, setdataList] = useState([]);
const [isLoding, setIsLoading] = useState(false);
const [minPaid, setMinPaid] = useState(0);
const dataSelectList = [
{ label: "2", value: "20000000" },
{ label: "3", value: "30000000" },
{ label: "4", value: "40000000" },
{ label: "5", value: "50000000" },
{ label: "10", value: "100000000" },
];
const LoadData = () => {
setIsLoading(true);
fetch("url", {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
paid: minPaid,
}),
})
.then((response) => {
return response.json();
})
.then((data) => {
setIsLoading(false);
if (data.success)
setdataList(data.list);
});
};
const onChange = (selectedOption) => {
setMinPaid(parseInt(selectedOption.value));
LoadData();
};
return (
<div>
<Select
options={dataList}
onChange={onChange.bind(this)}
/>
</div>
);
您可以将setMinPaid(parseInt(selectedOption.value))
改为setMinPaid(parseInt(selectedOption.target.value))
。
你的代码对我来说有多个“什么”因素。这一次,您有一个名为loadData的函数,它执行POST。。。
我看到的另一件事是;
<Select
options={dataList}
onChange={onChange.bind(this)}
/>
有一个绑定
,我认为没有必要,相反,我会将其更改为
<Select
options={dataList}
onChange={onChange}
/>
另外,当您执行状态更改,然后调用函数时,在调用fetch时,状态更改可能不会更新。
const onChange = (selectedOption) => {
setMinPaid(parseInt(selectedOption.value));
LoadData();
};
因此,我认为最好将该值传递给LoadData函数,如下所示:
const [dataList, setdataList] = useState([]);
const [isLoding, setIsLoading] = useState(false);
const [minPaid, setMinPaid] = useState(0);
const dataSelectList = [
{ label: "2", value: "20000000" },
{ label: "3", value: "30000000" },
{ label: "4", value: "40000000" },
{ label: "5", value: "50000000" },
{ label: "10", value: "100000000" },
];
const LoadData = (minPaid) => {
setIsLoading(true);
fetch("url", {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({
paid: minPaid,
}),
})
.then((response) => {
return response.json();
})
.then((data) => {
setIsLoading(false);
if (data.success)
setdataList(data.list);
});
};
const onChange = (selectedOption) => {
setMinPaid(parseInt(selectedOption.value));
LoadData(parseInt(selectedOption.value));
};
return (
<div>
<Select
options={dataList}
onChange={onChange}
/>
</div>
);
问题内容: 保持不变,尽管我在函数中调度了一个动作: 输出为NO_AUTH(的初始值) 减速器: 知道为什么吗? 问题答案: 您当前正在直接在未映射到的componentDidMount内部调度: 这应该做的工作: 现在,这将获得authState:
问题内容: 我有一个这样的状态,我正在设置和标记如下: 我有一个列表,其中包含状态为类的项目: 在这里,如何更改特定div的类名? 问题答案: 以下是我相信您正在尝试做的一个功能齐全的示例(带有功能性摘录)。 根据您的问题,您似乎正在为所有元素修改1属性。这就是为什么当您单击一个时,它们全部都被更改了。 尤其要注意,状态跟踪 哪个 元素处于活动状态的索引。当被点击时,它告诉它的索引,更新,随后相应
有一个案例我很困惑。 我有一个对象redux状态:{show:true,creative:{name:'a',tags:[t1,t2,t3]}。此对象已通过“react redux”的“connect”功能映射到道具。 当我改变属性“显示”或“creative.name”时,它确实会触发重新渲染。但是如果我将t0追加到"creative.tags",它就不会运行re-渲染。 我必须分配一个新变量来
问题内容: 所以我有这个: newDealersDeckTotal只是一个数字数组,例如,但是没有给出正确的总数,但是呢?我什至设置了超时延迟,以查看是否可以解决问题。任何明显的还是我应该发布更多代码? 问题答案: 通常是异步的,这意味着在您处于状态时,它尚未更新。尝试将日志放入方法的回调中。状态更改完成后执行:
问题内容: 在这里,我尝试设置为’hello’,然后打印它,但是状态似乎为空。当我刚刚使用更新状态时怎么办?设置为全局变量。 问题答案: 从reactjs文档中: 不会立即变异,但会创建待处理的状态转换。调用此方法后进行访问可能会返回现有值。 https://facebook.github.io/react/docs/component- api.html 您可以做的是将状态更新后传递给回调函数:
我有一个带有两组按钮(功能和目标)的界面。当我点击一个按钮时,我希望它从一个团队转到另一个团队。我正在用react和redux实现这一点。我唯一的问题是,当状态更新并且我成功地记录了更新的状态时,除非我使用forceUpdate(),否则组件不会更新。我不明白的是,既然状态更新成功,组件不应该自动重新渲染吗? 一些js 正如您所看到的,当我单击一个按钮时,我触发updateLists函数,该函数将