如何将输入数据传回 class 组件?
How to pass input data back to class component?
如何将子组件中的两个输入选择的数据传递到父组件状态,即 class 组件?
这个让我摸不着头脑。
父组件
export default class ProfileEditor extends React.Component<IProfileEditorProps, IProfileEditorState> {
constructor(props: IProfileEditorProps) {
super(props);
this.state = {
isLoading: true,
currentUser: null,
select1: values to be set from child component
select2: values to be set from child component
}
<MultiSelect
options={countries}
onInputChange1={input1 => console.log(input1)}
onInputChange2={input2 => console.log(input2)}
/>
子组件:
export const MultiSelect = ({options, onInputChange1, onInputChange2}) => {
console.log(options);
const [options1, setOption1] = React.useState(options);
const [options2, setOption2] = React.useState(options);
return (
<>
<Select
isMulti
options={options1}
closeMenuOnSelect={false}
onInputChange={onInputChange1}
onChange={(v1) => {
setOption2(options.filter((o2) => !v1.includes(o2)));
}}
/>
<div style={{ height: 30 }} />
<Select
isMulti
options={options2}
closeMenuOnSelect={false}
onInputChange={onInputChange2}
onChange={(v2) => {
setOption1(options.filter((o1) => !v2.includes(o1)));
}}
/>
</>
);
};
您可以将回调从 parent 传递到 child。在 child 中,定义一些属性以允许 parent 将回调传递给,以便它可以监听输入变化:
export const MultiSelect = ({ onInputChange1, onInputChange2 }) => {
return (
<>
<Select
{...}
onInputChange={onInputChange1}
/>
<div style={{ height: 30 }} />
<Select
{...}
onInputChange={onInputChange2}
/>
</>
);
};
在parent中,当输入值改变时,你可以开始监听并为所欲为:
<MultiSelect onInputChange1={input1 => {...}} onInputChange2={input2 => {...}} />
如何将子组件中的两个输入选择的数据传递到父组件状态,即 class 组件?
这个让我摸不着头脑。
父组件
export default class ProfileEditor extends React.Component<IProfileEditorProps, IProfileEditorState> {
constructor(props: IProfileEditorProps) {
super(props);
this.state = {
isLoading: true,
currentUser: null,
select1: values to be set from child component
select2: values to be set from child component
}
<MultiSelect
options={countries}
onInputChange1={input1 => console.log(input1)}
onInputChange2={input2 => console.log(input2)}
/>
子组件:
export const MultiSelect = ({options, onInputChange1, onInputChange2}) => {
console.log(options);
const [options1, setOption1] = React.useState(options);
const [options2, setOption2] = React.useState(options);
return (
<>
<Select
isMulti
options={options1}
closeMenuOnSelect={false}
onInputChange={onInputChange1}
onChange={(v1) => {
setOption2(options.filter((o2) => !v1.includes(o2)));
}}
/>
<div style={{ height: 30 }} />
<Select
isMulti
options={options2}
closeMenuOnSelect={false}
onInputChange={onInputChange2}
onChange={(v2) => {
setOption1(options.filter((o1) => !v2.includes(o1)));
}}
/>
</>
);
};
您可以将回调从 parent 传递到 child。在 child 中,定义一些属性以允许 parent 将回调传递给,以便它可以监听输入变化:
export const MultiSelect = ({ onInputChange1, onInputChange2 }) => {
return (
<>
<Select
{...}
onInputChange={onInputChange1}
/>
<div style={{ height: 30 }} />
<Select
{...}
onInputChange={onInputChange2}
/>
</>
);
};
在parent中,当输入值改变时,你可以开始监听并为所欲为:
<MultiSelect onInputChange1={input1 => {...}} onInputChange2={input2 => {...}} />