代码沙盒:https://codesandbox.io/embed/react-table-editable-content-ggvcy https://codesandbox.io/embed/react-table-editable-content-ggvcy
当尝试处理 React-table 的输入时,我的输入失去焦点,因此我一次只能输入 1 个字符。
如何修复渲染周期以允许输入?
编辑:我不小心用代码的工作版本更新了沙箱,尽管它还有另一个错误:由于关注模糊变化,如何在刷新期间捕获反应事件? https://stackoverflow.com/questions/57435242/how-to-capture-react-events-during-a-refresh-update-due-to-a-focus-onblur-change
这个问题非常狡猾:当您将“Cell”渲染道具传递给react-tables时,它将被视为react组件。这意味着他们会像这样使用:<Cell ... />
.
See https://github.com/tannerlinsley/react-table/blob/v6.9.2/src/utils.js#L208 https://github.com/tannerlinsley/react-table/blob/v6.9.2/src/utils.js#L208 and https://github.com/tannerlinsley/react-table/blob/v6.9.2/src/index.js#L541 https://github.com/tannerlinsley/react-table/blob/v6.9.2/src/index.js#L541
这意味着,在每次渲染时,您将创建一个新的成分renderEditable 因此当显示发生变化时,旧的 renderEditable 会被卸载,新的会取代它的位置。这是不幸的,因为内部输入会失去焦点。
你可以做的就是使用旧版本(没有钩子),如下所示:https://github.com/tannerlinsley/react-table/blob/8b07b2c84e0ee29e0ecaa4fe23e96e864ab806a9/archives/v6-examples/react-table-editable-content/src/index.js https://github.com/tannerlinsley/react-table/blob/8b07b2c84e0ee29e0ecaa4fe23e96e864ab806a9/archives/v6-examples/react-table-editable-content/src/index.js
或者像这样一直使用钩子:https://github.com/tannerlinsley/react-table/blob/5145a632c944d135863d8a2f14a160a2f9395f61/examples/editable-data/src/App.js https://github.com/tannerlinsley/react-table/blob/5145a632c944d135863d8a2f14a160a2f9395f61/examples/editable-data/src/App.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)