我正在尝试使用useRef viz清除反应表组件的filtered
状态。 ref.current.setState({...})
。
这是我的组件的一个片段:
const Customers = (props) => {
const customerTableRef = useRef()
useEffect(() => {
const customerTable = customerTableRef.current
if (customerTable) {
customerTable.setState({ ...customerTable.state, filtered: [] })
console.log("table effect::", customerTable.state)
}
}, [props.selectedDealer])
我在UI中有一个选择输入,该输入绑定到props.selectedDealer
,我想在用户更改props.selectedDealer
时清除反应表的过滤器。
反应表组件在Customers
组件中不可用,但在层次结构中处于非常低的级别:
Customers > CustomersTable > AppTableWrapper > AppTable > ReactTable
。
我正在将customerTableRef
传递到ReactTable
。在开发工具中,我可以看到ref被组件选项夸大了,但是customerTable.setState({ ...customerTable.state, filtered: []})
并未改变ReactTable
的状态。
答案 0 :(得分:0)
我建议将customerTable传递给redux。在我们通过redux将其传递给您的组件之后。 在状态变量中:useState或useReducer。状态变量的更新将导致组件的重新渲染。 在ref中:等效于类组件中的实例变量。更改.current属性不会导致重新渲染