Javascript 是否为嵌套组件导出React中的挂钩?

Javascript 是否为嵌套组件导出React中的挂钩?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在导出带有嵌套组件的挂钩,以便父级可以切换子级的状态。如何使此切换与挂钩而不是经典类或老式函数一起工作 子组件 让导出可见; 导出let setVisible=()=>{}; export const ToggleSwitch=()=>{ const[visible,setvisible]=使用状态(false); 返回可见的&&( ) } 家长 import*作为“ToggleSwitch”中的ToggleSwitch; 导出常量父项:React.FC=(道具)=>{ 返回( Toggl

我正在导出带有嵌套组件的挂钩,以便父级可以切换子级的状态。如何使此切换与挂钩而不是经典类或老式函数一起工作

子组件

让导出可见;
导出let setVisible=()=>{};
export const ToggleSwitch=()=>{
const[visible,setvisible]=使用状态(false);
返回可见的&&(
)
}
家长

import*作为“ToggleSwitch”中的ToggleSwitch;
导出常量父项:React.FC=(道具)=>{
返回(
ToggleSwitch.setVisible(true)}/>
)
}
错误:Linter说[setVisible]是子对象中未使用的变量。。。(但在母公司中是必需的)


您可以将可见状态移动到父级,如下所示:

const Child = ({ visible }) => {
    return visible && <h2>Child</h2>;
};

const Parent = () => {
  const [visible, setVisible] = React.useState(false);
  return (
    <div>
        <h1>Parent</h1>
        <Child visible={visible} />
        <button onClick={() => setVisible(visible => !visible)}>
            Toggle
        </button>
    </div>
  );
};
constchild=({visible})=>{
返回可见(&Child);
};
常量父项=()=>{
const[visible,setVisible]=React.useState(false);
返回(
父母亲
setVisible(可见=>!可见)}>
切换
);
};

如果您有许多子组件,则应在
集合中设置更复杂的逻辑。将对象置于useState,其中该对象的属性将是所有名称(ID)如您所知,React是单向数据绑定,因此,如果您想传递任何道具或状态,您只有一种方法,即从父组件传递到子组件,如果逻辑变大,则必须使用状态管理库或带有React挂钩的上下文API将其设为全局状态,使用reducer和use效果。

setVisible
未在
切换开关中使用,因此这并非意外。这非常干净,效果非常好!如果要将钩子传递给同级组件,该怎么办:*父级包含钩子*子级包含视图*同级渲染视图