我在React中使用一个调色板生成器,我遇到的问题是,当我尝试将不同的颜色传递给将形成调色板的每个子divs时,每个子divs都得到相同的颜色。
这是密码
class ColorPaletteContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
color: null,
};
this.setRandomColor = this.setRandomColor.bind(this);
}
setRandomColor() {
let randomColor = "rgb(";
for (let i = 0; i < 3; i++) {
randomColor += Math.floor(Math.random() * 255);
if (i < 2) {
randomColor += ",";
}
}
randomColor += ")";
this.setState({
color: randomColor,
});
}
render() {
return (
<>
<ColorDiv color={this.state.color}></ColorDiv>
<ColorDiv color={this.state.color}></ColorDiv>
<ColorDiv color={this.state.color}></ColorDiv>
<button onClick={this.setRandomColor}>Press me!</button>
</>
);
}
}
class ColorDiv extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div>
<h1 style={{ background: this.props.color }}>This is a color div!</h1>
</div>
);
}
}
基本上父组件将相同的颜色传递给所有3个子组件,因为我传递了相同的状态。知道我怎么通过不同的颜色吗?
使状态为颜色数组,如
this.state = {
colors: [],
}
然后生成并将n
randoms颜色推入其中,迭代数组并呈现子组
它看起来如下所示:
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
colors: []
};
this.setRandomColors = this.setRandomColors.bind(this);
}
generateRandomColor() {
let randomColor = "rgb(";
for (let i = 0; i < 3; i++) {
randomColor += Math.floor(Math.random() * 255);
if (i < 2) {
randomColor += ",";
}
}
randomColor += ")";
return randomColor;
}
setRandomColors() {
const colors = [];
for (let i = 0; i < 3; i++) {
colors.push(this.generateRandomColor());
}
this.setState(() => { return {colors: colors}; });
}
render() {
return (
<>
{this.state.colors.map((color) => {
return <ColorDiv color={color}></ColorDiv>;
})}
<button onClick={this.setRandomColors}>Press me!</button>
</>
);
}
}
我正在使用react路由器dom v5。反应v16中的2.0。13.1项目中,我使用静态路由将道具从父组件传递到子组件,父组件从其父组件(即祖父)接收道具。从应用程序。js-
也许有一种方法可以将组件绑定到事件? 在使用React一年多后,在Sebastien Lorber的回答的激励下,我得出结论,将子组件作为参数传递给父母中的函数实际上不是React的方式,也不是一个好主意。我换了答案。
问题内容: 在组件中,我需要将函数的返回值传递给属性。然后从属性需要被传递到的组件。新来的反应。不确定如何将属性从子级传递到组件。 问题答案: 您可以将函数从父级传递给子级,子级可以使用颜色调用该函数(很多操作都类似于事件处理程序)。在App中收到颜色后,使用.setState()将其分配给状态值,然后将其在render()中获取
我使用的是dev-express中的react-grid库,库中有一个表组件,我们可以向它传递单元格组件,在CustomCell中,我使用的是Material UI中的菜单 在上述情况下,菜单工作良好, 但是我想要传递道具到这个组件,我尝试了以下操作 在这种情况下菜单不工作,我想知道是否有一个替代的方法来实现第二种情况。
问题内容: 我需要使用路由器将道具传递到组件。这是我的代码: 如您所见,isAuthenticated我想传递给Login组件的道具。 当我登录道具时, isAuthenticated 道具不存在。我做错了什么?如何正确通过道具?我关注了文档以及其他讨论。据我了解,它应该可以工作。的版本 做出反应路由器 和 反应路由器- DOM 是 4.0.0 问题答案: 像这样传递它: 它应该在“登录组件”中可
我正在使用react语义ui模态对象。打开模态的对象是一个道具。 我想在另一个组件中嵌入模态: 如何传递JSX代码(