gpt4 book ai didi

javascript - 如何从 parent 中选择一组 child ?

转载 作者:数据小太阳 更新时间:2023-10-29 06:10:18 26 4
gpt4 key购买 nike

假设我有一个 Parent 组件,它呈现一组 Child 组件。当悬停其中一个 Child 组件时,我希望突出显示(bg 颜色)属于同一组的 Child 组件。

看下面的代码,每个Child都有一个组属性:

https://jsfiddle.net/69z2wepo/53442/

const Parent = React.createClass({
render() {
const rows = [];
let group = 1;
for (let i = 1; i <= 12; i++) {
rows.push(<Child key={i} id={i} group={group} />);

if (i % 3 === 0) {
group++;
}
}
return (
<ul>
{rows}
</ul>
);
}
});

const Child = React.createClass({
render() {
return (
<li className="child">id: {this.props.id} - group: {this.props.group}</li>
);
}
});

ReactDOM.render(
<Parent />,
document.getElementById('app')
);

如果我将 Child 悬停在 id 属性为 6 的位置,如何突出显示同一组(即第 2 组)中的所有 Child 组件?

注意:我是 React 的新手,如果标题有误导性,我深表歉意。

最佳答案

我会像这样处理本地状态:

简而言之,我们正在为父级上的当前组生成一个状态变量。然后我们给每个 child 一个代理方法,它调用 onMouseEnter 并将其 group 属性传递给父方法。然后,每个渲染器将事件组与它自己的组进行比较,并在 child 上设置事件 Prop 。然后 child 检查它的 active 属性以应用 active 类。显然,您可以大大扩展此行为。查看 React 的事件系统,here .

这个 fiddle 是它如何工作的一个非常基本的例子:

https://jsfiddle.net/69z2wepo/53444/

CSS

.active {
background-color: yellow;
}

JS

const Parent = React.createClass({
getInitialState() {
return {
group: null
}
},

render() {
const rows = [];
let group = 1;

for (let i = 1; i <= 12; i++) {
const child = <Child
key={i}
id={i}
group={group}
hover={(group) => this.setState({ group })}
active={group === this.state.group} />;

rows.push(child);

if (i % 3 === 0) {
group++;
}
}

return (
<ul>
{rows}
</ul>
);
}
});

const Child = React.createClass({
render() {
return (
<li
className={this.props.active && 'active'}
onMouseEnter={() => this.props.hover(this.props.group)}
>
id: {this.props.id} - group: {this.props.group}
</li>
);
}
});

ReactDOM.render(
<Parent />,
document.getElementById('app')
);

关于javascript - 如何从 parent 中选择一组 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066449/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com