Reactjs 给孩子们传递道具
我正试着给这个传递额外的道具。道具。孩子们,我看到了这个答案 出于某种原因,虽然我没有收到任何错误,但我看不到道具 所以我有这个状态Reactjs 给孩子们传递道具,reactjs,Reactjs,我正试着给这个传递额外的道具。道具。孩子们,我看到了这个答案 出于某种原因,虽然我没有收到任何错误,但我看不到道具 所以我有这个状态 this.state = { open: true } 我想把它传给这个.props.children,这就是我到目前为止所做的: { React.Children.map(this.props.children, child => React.cloneElement(child, {sidebarState: this.
this.state = {
open: true
}
我想把它传给这个.props.children,这就是我到目前为止所做的:
{
React.Children.map(this.props.children, child =>
React.cloneElement(child, {sidebarState: this.state.open}))
}
当我在console.logging this.props上记录孩子们时,我看不到我的新道具
--编辑--
在孩子们身上看起来是这样的:
render() {
console.log(this.props)
// other code
}
顺便说一句,我正在使用react 16.0,有两种方法可以向孩子们传递道具: 儿童作为功能 子元素可以是函数,而不是React元素 调用children函数:
const List = ({ children, sidebarState }) => (
<ul>
{
children(sidebarState)
}
</ul>
);
<List sidebarState={sidebarState}>
{
(sidebarState) => (
<Item sidebarState={sidebarState} />
)
}
</List>
向子对象传递函数:
const List = ({ children, sidebarState }) => (
<ul>
{
children(sidebarState)
}
</ul>
);
<List sidebarState={sidebarState}>
{
(sidebarState) => (
<Item sidebarState={sidebarState} />
)
}
</List>
工作示例:
常数{Component}=React;
const Item={sidebarState}=>
{sidebarState?'open':'close'}
;
const List={children,sidebarState}=>
{
儿童糖化血红蛋白
}
;
类应用程序扩展组件{
构造器{
超级作物;
此.state={
侧边栏状态:正确
}
}
toggleOpen=>this.setStateprevState=>{
sidebarState:!prevState.sidebarState
};
渲染{
const{sidebarState}=this.state;
回来
切换
{
sidebarState=>
}
;
}
}
ReactDOM.render
,
演示
;
向儿童传递道具有两种方式: 儿童作为功能 子元素可以是函数,而不是React元素 调用children函数:
const List = ({ children, sidebarState }) => (
<ul>
{
children(sidebarState)
}
</ul>
);
<List sidebarState={sidebarState}>
{
(sidebarState) => (
<Item sidebarState={sidebarState} />
)
}
</List>
向子对象传递函数:
const List = ({ children, sidebarState }) => (
<ul>
{
children(sidebarState)
}
</ul>
);
<List sidebarState={sidebarState}>
{
(sidebarState) => (
<Item sidebarState={sidebarState} />
)
}
</List>
工作示例:
常数{Component}=React;
const Item={sidebarState}=>
{sidebarState?'open':'close'}
;
const List={children,sidebarState}=>
{
儿童糖化血红蛋白
}
;
类应用程序扩展组件{
构造器{
超级作物;
此.state={
侧边栏状态:正确
}
}
toggleOpen=>this.setStateprevState=>{
sidebarState:!prevState.sidebarState
};
渲染{
const{sidebarState}=this.state;
回来
切换
{
sidebarState=>
}
;
}
}
ReactDOM.render
,
演示
;
这里有一个例子
在不向孩子们传递道具之前:
props1和props2与每个子级的现有props合并
关于类型脚本类型,您必须使用React.ReactElement而不是React.ReactNode,否则TS编译器将在React.Children.map或TS忽略它:
type Props = {
children: React.ReactElement;
};
更多的解释请参见,这对我理解如何做有很大帮助!梅迪姆佩沃尔
这里有一个例子
在不向孩子们传递道具之前:
props1和props2与每个子级的现有props合并
关于类型脚本类型,您必须使用React.ReactElement而不是React.ReactNode,否则TS编译器将在React.Children.map或TS忽略它:
type Props = {
children: React.ReactElement;
};
更多的解释请参见,这对我理解如何做有很大帮助!梅迪姆佩沃尔
你把控制台放在孩子们里面的地方,你能展示代码吗?我已经添加了它,但我不知道它是否会有很大帮助。你试过使用jsx吗?使用jsx很容易指定道具。我总是在那里得到一个不同的组件,所以我不确定jsx将如何完成这项工作。如果你把控制台放在孩子们里面,你能显示代码吗?我已经添加了它,但我不知道它是否会有很大帮助。你试过使用jsx吗?使用jsx指定道具比较容易,因为我总是在那里得到一个不同的组件,所以我不确定jsx将如何在这里完成这项工作