【发布时间】:2021-09-29 21:24:23
【问题描述】:
我倾向于使用 react 功能组件和钩子,因为我没有很多 react 经验。我想在父功能组件中使用 react-dual-listbox 类组件。在这个父组件中,我希望能够访问子类组件的selected 状态。最好的方法是什么?
来自https://github.com/jakezatecky/react-dual-listbox 的子 react-dual-listbox 组件
import React from 'react';
import DualListBox from 'react-dual-listbox';
const options = [
{ value: 1, label: 'Option One' },
{ value: 2, label: 'Option Two' },
];
class DualListChild extends React.Component {
state = {
selected: [1],
};
onChange = (selected) => {
this.setState({ selected });
};
render() {
const { selected } = this.state;
return (
<DualListBox
options={options}
selected={selected}
onChange={this.onChange}
/>
);
}
}
包含在标准功能组件中
function Parent() {
return(
<div>
<DualListChild/>
</div>
)
}
export default Parent;
是否有可能,例如,在父组件中有一个钩子来改变与双列表框选择的状态相对应的状态?本质上我想将状态传递给功能组件?有没有办法做到这一点?
谢谢
【问题讨论】:
-
在反应中,您应该将状态提升到父组件并将其作为道具与处理程序一起传递以更改状态,而不是向上传递状态(这是一种反模式)。一般规则是:数据向下流动,动作冒泡。
标签: javascript reactjs listbox react-component react-state