React Table 第一次不更新值

React Table not updating value the first time

提问人:Cool 提问时间:11/4/2023 最后编辑:Cool 更新时间:11/4/2023 访问量:24

问:

第一次调用 SetState 时 React 表不更新的问题。 在下面的示例代码中,表中的 InputBox 显示了在类级别声明的 toggleViewState 变量的值

首次加载表单时,它会在表中正确地将值显示为 true

但是,当点击按钮切换状态时,输入框不会在第一次单击时显示更新的值,它只在第二次单击时显示更新的值,值为 false

代码提取

const [toggleViewState, setToggleViewState] = useState(true); 

const columns = [
 {
      dataIndex: 'targetRowValue',
      key: 'temp',
      width: '20%',
      render: (text, record, index) => (
        <Input size="medium" value={toggleViewState}/>        
      ),
    },
  ];

const onSwitchViewState = () => {
  setToggleViewState(!toggleViewState);
}


return (
    <div>
      {targetData.length > 0 && (
        <Table
          data={targetData}
          style={{ wordBreak: 'break-all' }}
          columns={columns}
          striped          
        />
      )}
<div className="lmn-mt-3">
        <table>
          <tr>
            <td>`your text`
<Button onClick={onSwitchViewState}>Toggle View</Button>
</td>
</tr></table></div></div>

尝试使用 useMemo hook add 在声明列定义时添加对 toggleViewState 变量的依赖,但它不起作用'

reactjs 反应表

评论


答:

0赞 ray 11/4/2023 #1

你的问题主要是缺乏数据,而且很难知道表格里发生了什么。状态更新正常。但是,查看代码,我可以猜测。这可能是因为 React 在 dom 更新期间不会认为你的元素有什么不同。尝试在输入元素中添加一个键:Input

 render: (text, record, index) => (
        <Input size="medium" value={toggleViewState} key={`${toggleViewState}-${index}`} />        
      ),