在reactjs中使用DOM的正确或标准方法
我有两个div,我想实现的是,当我单击div left_1然后单击div在reactjs中使用DOM的正确或标准方法,reactjs,Reactjs,我有两个div,我想实现的是,当我单击div left_1然后单击divright_1setaria selected=true和right_2setaria selected=false时,对于left_2等,同样的行为 +------------+ +-------------+ | div left_1 | | div right_1 | +------------+ +-------------+ +------------+ +------
right_1
setaria selected=true
和right_2
setaria selected=false
时,对于left_2
等,同样的行为
+------------+ +-------------+
| div left_1 | | div right_1 |
+------------+ +-------------+
+------------+ +-------------+
| div left_2 | | div right_2 |
+------------+ +-------------+
...
DOM可以很容易地由香草JavaScript来播放,比如
document.getElementByClassName('left_1')[0].addEventListener('click', e => {
document.getElementByClassName('right_1')[0].setAttribute('aria-selected', true)
})
如果需要更多的编程,我们可以做left{number}
,然后相应地更改right{number}
的属性
我在react代码中也可以这样做,尽管react JS使用虚拟DOM,但我发现我仍然可以使用document.getElementByClassName
或querySelector
等来选择div。然而,我认为这不是一个正确/标准的方法
我的问题是,当我们需要经常操作DOM时,我们是否只需要执行多个
ref
,比如this.left1=React.createRef()
ref={this.left1}
this.left2=React.createRef()
ref={this.left2}
。。。或者还有其他的方法。我对DOM部分有点不清楚。当涉及到DOM元素选择时,使用refs
将是正确的方法。您也可以考虑将这些位置存储在<代码>状态>代码中(取决于很多东西),并在当涉及DOM元素选择时,使用<代码> REFS> /代码>将是正确的方式。您也可以考虑将这些位置存储在<代码>状态>代码中(取决于很多东西),并在<代码>渲染< /COD>方法中计算<代码>样式/属性/监听器< /代码>等。
< p>我将尝试使用Reave< <代码>状态>代码>此代码>参考文献>代码>,请参阅此处。 您可以按照以下思路做一些事情:handleClick = (e, position) => {
this.setState({
selected: position
})
}
render () {
<div name="left_1" onClick={e => this.handleClick(e, 1)}
attribute={this.state.selected === 1}/>
<div name="right_1" onClick={e => this.handleClick(e, 1)}
attribute={this.state.selected === 1}/>
}
我会尝试使用react的
状态
来查看参考
,请参见此处了解更多信息
您可以按照以下思路做一些事情:
handleClick = (e, position) => {
this.setState({
selected: position
})
}
render () {
<div name="left_1" onClick={e => this.handleClick(e, 1)}
attribute={this.state.selected === 1}/>
<div name="right_1" onClick={e => this.handleClick(e, 1)}
attribute={this.state.selected === 1}/>
}
为什么要避免虚拟dom?@geckos。不,我不想。如果要实现这个目标,最好的方法是什么?为什么要避免虚拟dom?@geckos。不,我不想。如果要达到目标,最好的方法是什么?谢谢你的回答。如果有8个div用于左{1,2,3,4…}
和8个右{1,2,3,4…}
它们都需要处于状态
,这是一个有点手工的工作。谢谢你的回答。如果有8个div用于左{1,2,3,4…}
和8个右{1,2,3,4…}
它们都需要处于状态
,这是一个有点手工的工作。感谢您的回答和示例。是的,我正在寻找实现目标的正确方法,也许不需要操纵DOM?我需要一些想法。想象我有4或8个左{1,2,3,4…}
然后如何有效地实现目标。我添加了一个带有8个div的工作示例。您可以通过修改数组来更改数字。这就是你想要的吗?谢谢你的回答和例子。是的,我正在寻找实现目标的正确方法,也许不需要操纵DOM?我需要一些想法。想象我有4或8个左{1,2,3,4…}
然后如何有效地实现目标。我添加了一个带有8个div的工作示例。您可以通过修改数组来更改数字。这就是你要找的吗?