我有一个带有 useEffect 的 React 组件,当 props 更改时,该组件不会被触发。我希望这个组件根据 prop 更新它所显示的内容。然而,当 prop 改变时,什么也没有发生。
为了调试,我添加了一个可以手动更新值的按钮,效果很好。我只是无法让 useEffect 终生运行。
const ReadOnly = (props: WidgetProps) => {
const [value, setValue] = React.useState('No Value');
const { formContext } = props;
const firstName = () => formContext.queryData[0]?.basicInformation?.firstName ?? 'No value';
// This only runs once when the component is first rendered never fired when formContext updates.
React.useEffect(() => {
setValue(firstName());
}, [formContext]);
// This correctly updates the value
const onClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
e.preventDefault();
setValue(firstName()); …Run Code Online (Sandbox Code Playgroud)