【发布时间】:2021-01-12 01:21:48
【问题描述】:
我是使用 React.FC 的新手,并且一直在使用 redux,所以我不熟悉 React 本身的生命周期,但由于项目限制而无法使用它们,所以请帮助我。
我有一个作为 React.FC 组件的表单,它将在创建新内容和编辑时使用,我控制父状态中默认值的默认值并将它们作为道具传递。
export const Form: React.FC<Props> = props => {
const [title, setTitle] = React.useState(props.defaultValues.title)
const onChangeTitle = (event: React.ChangeEvent<HTMLInputElement>) => {
setTitle(event.target.value)
}
return (
<div>
<input
type="text"
value={title}
onChange={onChangeTitle}
/>
</div>
)
}
问题是当我将新的默认值传递给组件以更新它们时,标题不会出现在输入中,表单输入不会相应更新,我放了一个
console.log(title)
在 const 声明的正下方,查看它们是否已正确更新,只是它们没有显示在输入值中。
我觉得在这种情况下我没有做我应该做的事情并且误解了重新渲染在 FC 中的工作原理,我查看了示例,其中大多数只是具有空白默认值的表单,我真的找不到我想要的东西。
编辑:我已经从代码中删减了太多并删除了回调
【问题讨论】:
-
应该更新状态的
onChangeTitle回调在哪里?功能组件仍然是反应组件,因此渲染和组件生命周期与基于类的组件相同。有点不清楚你认为你的问题是什么。你真正想做什么?你能分享你的完整组件代码吗? -
对不起,我的问题不是我不能编辑输入,我的意思是我有一个我想通过这个组件更改的数据列表,以及我想在什么时候输入他们没有更新的当前数据值,为了清楚起见,我现在将更多地编辑问题。