【发布时间】:2021-01-07 15:47:36
【问题描述】:
我有一个 TextField,它在更改时使用 useState 更新状态。我面临一个问题,即在状态更改后整个组件都会重新渲染,我希望只有 TextField 会更改。
const Uploader = ({ onUploadComplete }) => {
const [fields, setFields] = useState({});
const handleName = (event) => {
const { name, value } = event.target;
setFields((fields) => ({
...fields,
[name]: { value: value },
}
<React.Fragment>
<Grid item xs={4}>
<Card>{console.log('Card Media Rendered')}</Card>
</Grid>
<Grid item xs={8}>
<FormControl fullWidth>
<TextField
value={fields[file.id]?.value || ''}
onChange={handleName}
/>
</FormControl>
</Grid>
</React.Fragment>
}
【问题讨论】:
-
状态改变会导致组件重新渲染,这就是它的工作原理。
-
这是整个组件吗?这里似乎还有其他一些问题。就像
Uploader不返回任何东西一样。 -
对不起,我应该说这段代码为了便于阅读而被修剪了