React JS 中 MaterialUI 的奇怪 setState 行为
Weird setState behaviour with MaterialUI in React JS
我正在尝试显示来自 material-ui 的输入组件,但是当我写一些文本(大约 3 个字母)时,页面崩溃了。
import React from 'react';
import Input from '@material-ui/core/Input';
export default function ComposedTextField() {
const [state, setState] = React.useState('');
const handleChange = event => {
setState((state) => event.target.value);
};
return (
<Input id="component-simple" value={state} onChange={handleChange} />
);
}
我注意到将 setState((state) => event.target.value);
替换为 setState(event.target.value);
可以解决问题,但我需要(在我的真实项目中)使用完整版本的 setState。
有人知道为什么 setState((state) => event.target.value);
不起作用吗?
event
对象在回调 运行 之后被重新使用,所以它 cannot be used asynchronously 就像代码现在所做的那样。
从事件中获取你需要的任何值到它们自己的变量中:
const handleChange = event => {
const { value } = event.target
setState((state) => value);
};
或者,如果您需要访问整个事件,您可以使用 event.persist()
将对象从池中移除,而不是重新使用它。
我正在尝试显示来自 material-ui 的输入组件,但是当我写一些文本(大约 3 个字母)时,页面崩溃了。
import React from 'react';
import Input from '@material-ui/core/Input';
export default function ComposedTextField() {
const [state, setState] = React.useState('');
const handleChange = event => {
setState((state) => event.target.value);
};
return (
<Input id="component-simple" value={state} onChange={handleChange} />
);
}
我注意到将 setState((state) => event.target.value);
替换为 setState(event.target.value);
可以解决问题,但我需要(在我的真实项目中)使用完整版本的 setState。
有人知道为什么 setState((state) => event.target.value);
不起作用吗?
event
对象在回调 运行 之后被重新使用,所以它 cannot be used asynchronously 就像代码现在所做的那样。
从事件中获取你需要的任何值到它们自己的变量中:
const handleChange = event => {
const { value } = event.target
setState((state) => value);
};
或者,如果您需要访问整个事件,您可以使用 event.persist()
将对象从池中移除,而不是重新使用它。