Javascript 如何将道具绑定到React中的组件
给定以下组件Javascript 如何将道具绑定到React中的组件,javascript,reactjs,Javascript,Reactjs,给定以下组件 const A = ({prop1,prop2}) => ( <div>{prop1 + ' ' + prop2}</div> ) 拿起道具,像这样传下去怎么样 <div><A prop1={BoundA.props.prop1} prop2='prop2!' /></div> React组件是不可变的,因此一旦创建了组件,就不能更改道具。要更新道具,我们必须像这样使用React.cloneElement
const A = ({prop1,prop2}) => (
<div>{prop1 + ' ' + prop2}</div>
)
拿起道具,像这样传下去怎么样
<div><A prop1={BoundA.props.prop1} prop2='prop2!' /></div>
React组件是不可变的,因此一旦创建了组件,就不能更改道具。要更新道具,我们必须像这样使用
React.cloneElement()
const B = ({ BoundA }) => (
<div>React.cloneElement(BoundA,{prop2:'prop2!'})</div>
)
const B=({BoundA})=>(
React.cloneElement(BoundA,{prop2:'prop2!'})
)
此解决方案与acdcjunior的类似,但不要求B导入A。这也使得B可以在不同时接受组件和组件实例的情况下接受组件我认为这可以完成工作,但如果我在A的构造函数中提出请求,我想会在两周内提出,你试过了吗?看来没有。尝试将
A
更改为class A.Component{constructor(props){super(props);console.log('A instantiated',props.prop1,this)console.log('--')}render(){return{this.props.prop1+''+this.props.prop2};}
。只有在渲染函数中使用组件进行实际渲染时,才会调用构造函数。因此,我看到您编辑了答案。你试过密码了吗?
const A = ({prop1,prop2}) => (
<div>{prop1 + ' ' + prop2}</div>
)
const B = ({ BoundA }) => {
BoundA.props.prop2 = 'new prop prop2';
return <div>{ BoundA }</div>
};
const B = ({ BoundA }) => (
<div>{ React.cloneElement(BoundA, {prop2: 'prop2!' }) }</div>
)
<B BoundA={<A prop1='prop1!' />} />
const B = ({ BoundA }) => (
<div>React.cloneElement(BoundA,{prop2:'prop2!'})</div>
)