因此,我想向附加到组件的任何子级添加某些样式。假设父组件称为节
,子组件称为卡
。在部分。js
我正在尝试以下方法:-
renderChildren = () =>{
return React.Children.map(this.props.children, (child, i)=>{
let el = React.cloneElement(child,{
style: {opacity:0.5}
})
return el
})
}
render(){
<ScrollView>
{this.renderChildren()}
</ScrollView>
}
上述方法对我不起作用。我想知道为什么。还有没有一种方法可以让我在孩子们之间绘制地图,并将他们包装在一个新的组件中?像这样的东西;
this.props.children.map(Child => <Wrapper> <Child/> </Wrapper> )
这里是您编写属性时的Typescript版本:
const mapped = Children.map(children, (child, index) => {
if(React.isValidElement(child)) {
return React.cloneElement(child, {
...child.props,
isFirst: index === 0,
isLast: !Array.isArray(children) || index === children.length - 1,
})
}
return null
})
我认为这个解决方案对每个孩子来说都是最简单的。渲染子对象时,将接收组件的实例,而不是组件函数。您只需要将实例包装到包装器组件中,如下所示。
this.props.children.map(child => <Wrapper>{child}</Wrapper> )
对于TypeScript:
React.Children.map(props.children, child => {
return <Wrapper>{child}</Wrapper>
})
要将您的孩子包装到包装器中,只需调用React即可。儿童将
映射到包装器组件中:
const OpaqueWrapper = ({ children }) => (
// check that children is defined
// if you do not want your wrapper to be rendered empty
children && (
<Wrapper>
{React.Children.map(children, child => (
React.cloneElement(child, {style: {...child.props.style, opacity: 0.5}})
))}
</Wrapper>
)
);
还请注意,必须将提供给原始子级的样式与注入的样式合并,否则将完全失去为子级设置样式的能力。
请参阅此代码沙盒以了解工作示例。
至于为什么它在您的代码中不起作用:您确定您的
编辑:
Slootion将所有子组件包装在一个包装器中,但我想用应用的包装器包装每个子组件,如我的问题所示。
只需将包装器移动到
React即可。儿童地图
:
const OpaqueWrapper = ({ children }) => (
React.Children.map(children, child => (
<Wrapper>
{React.cloneElement(child, {style: {...child.props.style, opacity: 0.5}})}
</Wrapper>
)))
);
问题内容: 在React中,我有类似的文件 parent.js 包含文本框和按钮 child.js 包含P标签 App.js 包含父组件和子组件 问题 将“父级”上的“文本框”值传递给子级,并将其显示在子级标记中。 完整代码 堆叠 问题答案: 更新了示例以将数据传递给子组件。 https://stackblitz.com/edit/react- trmj9i?file=child.js 在下面添加
问题内容: 我试图映射对象数组,每个数组包含另一个嵌套的对象数组。但是,该映射不适用于嵌套数组。我如何在嵌套数组的内容上进行映射,同时使所有的父对象保持相同? 小提琴: https : //jsfiddle.net/69z2wepo/249197/ 数据结构如下: 地图看起来像 问题答案: 由于每个元素都有一个数组,因此您也必须结束。 例
我现在的问题是,我不知道如何从子组件到父组件进行通信,因为一旦用户选择了一种语言,我想用所选的语言更新下拉列表,所以我需要填充方法handleClick来向父组件发送所选的语言并更新它,但我不知道如何做到这一点。到目前为止,我已经试过了,但没有运气 任何帮助都将不胜感激。
我正在使用: Spring3.2 Hibernate4.1.9 我需要用JPA映射三个类。A类和B类有很多种关系。A类和B类的唯一组合需要拥有C类的集合。 表A B表 表C 联接表--上的唯一键(fooId、barId) 改变现有的数据结构不是一种选择。 编辑1: 目标:加载一个Foo,获取它的条集合。从每个酒吧,得到它的(他们的!)收集数据。 甲级 B类 C类
如何设置父组件的状态从子组件内部的反应?子组件只是一个我想设置组件状态的函数。
我是新的反应,我正在尝试组件功能的风格。我有简单的待办事项清单。我想使用style属性从列表中删除todo项。从Chrome调试模式中,我看不到对复选框更改的即时反应,而且该项也没有删除。。。对我来说,这是如何管理组件状态的问题。我希望得到一些指导。 App.js Todos.js TodoItem.js 我希望这个getStyle()将遵循状态。。。以某种方式