【发布时间】:2021-07-22 09:28:53
【问题描述】:
我需要一个表单值来预填充来自 redux 状态的初始值:
问题是,REDUX 更新了,但是 useState 没有使用传入的初始值。
// redux
const {
[1]: stepInfo,
error,
saving,
} = useSelector((state) => state.implOnboard);
// local state
// setting up initial state
// =================================================================
const [name, setName] = React.useState(stepInfo.name);
const [description, setDescription] = React.useState(stepInfo.desc);
// =================================================================
输入元素(另一个具有 value={description})
都显示空字段而不是预填充值
<input
id="impl-name"
placeholder="gs-sentiment-analysis-impl-1"
value={name} // ???? using here
onChange={(e) => {
setName(e.target.value);
// enable the editing status to true for this step if any state changes
setEditingStepStatus(1, true);
}}
/>
调试
console.log(name, description); // prints '', ''
console.log(stepInfo); // but this prints the actual values that I want to show
【问题讨论】:
-
你确定redux是在初始状态设置之前设置的吗?
-
@DBS,即使后面设置了redux,它不会重新渲染组件并重新设置
useState上的初始值吗? -
我真的不知道。这就是我问的原因。
-
@Dilshan 要设置我通过 API 调用获得的初始值。这就是重点。
-
我猜反应组件初始化较早。也许你应该只在渲染中使用 redux 值?
标签: javascript reactjs redux react-redux react-hooks