![](/img/trans.png)
[英]How does the React component's state changes by using [event.target.name]?
[英]React hook's state using event to target a specific div
我是编码和反应的新手,我正在尝试更新 x4 div,所以当用户点击它时,它会更新里面的内容。 目前我更新了代码,但是它更新了所有 4 个 div,而不是单击的特定 div。
我知道这将通过使用事件来控制,但是有点困惑我到底需要包含什么。
任何正确方向的帮助将不胜感激。 当前代码运行良好,但所有 4 个 div 中的内容都会更新,而不是单击的特定内容
const [isActive, setIsActive] = useState(false)
const toggleContent = e => {
e.preventDefault()
setIsActive(!isActive)
}
示例 div 我试图在用户点击时更新(目前我有 x4 个其他的,它们的逻辑相同,但 HTML 内容不同。目前,当点击 4 个按钮中的任何一个时,所有 x4 div 内容都会更改,但我只希望它更改包含被点击按钮的特定 div
{!isActive ?
<article>
<h1>BEFORE CLICK TEXT</h1>
<a onClick={toggleClass}>BUTTON</a>
</article>
:
<article>
<p>AFTER CLICK TEXT</p>
<a onClick={toggleClass}>Back</a>
</article>
}
保持activeIndex
而不是仅活动 boolean。 在 render 方法中,根据 activeIndex 和 index 决定 div 的活动属性。
试试这个片段。
const content = ['abc', 'def', 'ghi', 'jkl']; const Component = () => { const [activeIndex, setActiveIndex] = React.useState(-1); return ( <div> {content.map((item, index) => <div key={item} style={{color: activeIndex === index? "red": "black" }} onClick={() => setActiveIndex(index)}> {item} </div>)} </div> ) } ReactDOM.render(<Component />, document.getElementById('app'));
<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script> <div id="app"> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.