我倾向于使用react功能组件和钩子,因为我对react没有太多经验。我想在父功能组件中使用react dual listbox类组件。在这个父组件中,我希望能够访问子类组件的selected
状态。最好的方法是什么?
来自https://github.com/jakezatecky/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;
例如,是否可能在父组件中有一个钩子,该钩子会根据dual listbox选择的内容更改状态?本质上我想把状态传递给一个功能组件?有办法做到这一点吗?
谢谢
作为一种替代方法,您可以有另一种状态来跟踪父级中选定的选项,并将其setter函数发送给子级。每当子级的状态改变时,调用来自父级的setter函数。通过这种方式,所选选项状态将随时为子组件和父组件提供最新值。
function Parent() {
const [selectedOptions, setSelectedOptions] = useState([]);
return(
<div>
<DualListChild onSelectedOptionsChange={setSelectedOptions}/>
</div>
)
}
export default Parent;
class DualListChild extends React.Component {
...
onChange = (selected) => {
this.setState({ selected });
props.onSelectedOptionsChange(selected);
};
...
}
除了使用useState
钩子,您可以执行与在DualListChild
中类似的操作:
class DualListChild extends React.Component {
onChange = (selected) => {
this.props.onSelected(selected);
};
render() {
return (
<DualListBox
options={options}
selected={this.props.selected}
onChange={this.onChange}
/>
);
}
}
function Parent() {
const [selected, setSelected] = React.useState();
return (
<div>
<DualListChild selected={selected} onSelected={setSelected} />
</div>
)
}
现在,您可以访问父组件中的
选定的
(甚至
setSelected
)。
我想访问
我在react native中有一个搜索栏组件,它在父组件中导入, SearchBar子组件具有以下元素: 是否可以访问此子组件在其中导入的父组件中的状态?提前感谢你的帮助
我创建了一个包含登录组件和注册组件的签名页面组件。我的问题是,我如何传递一个onhtml函数从父到子,以便更改我的父组件(签名页组件)的状态?我期望的是,通过单击子组件中的按钮,可以切换父组件的活动状态,并根据活动状态更改样式。我试图通过一个处理功能从父到子,但它不能很好地工作。 有什么解决办法吗? codesandbox中的详细信息:https://codesandbox.io/s/wizard
如何访问父组件中的窗体状态 这就是我正在做的(只是一个简短的代码,请忽略语法) 现在的问题是,如果onSelect handler()中的子对象脏了,我无法通知父对象不要呈现该子对象。我不能在render方法中执行setState,至少我可以提前通知使用componentDidUpdate,谢谢
问题内容: 我有两个组件: 父组件 ,我想从中更改子组件的状态: 和 子组件 : 我需要从父组件更改子组件的 打开 状态,还是单击父组件中的按钮时从父组件调用子组件的 toggleMenu() ? 问题答案: 状态应在父组件中进行管理。您可以通过添加属性将值传输到子组件。
我用React构建了3个组件。他们是: 包装器 列表 列表项 如何管理单击的复选框的状态。我想Wrapper知道哪些复选框被选中。