【发布时间】:2020-03-17 06:04:26
【问题描述】:
我今天被困在这个问题上,我尝试了几种可能的解决方案,但都没有解决这个问题。
这是我为团队资料页面创建的翻牌效果。当用户点击个人资料卡时,它会翻转卡片以在背面显示更多信息。我目前设置的方式是在触发 onClick 时一次性翻转所有卡片,而不是单个卡片。我知道通过这样做我需要设置 isTrue 的当前状态以从 JSON 对象呈现布尔值,并且我尝试了几种我能想到的可能的方法,但没有继承。
如果有人能帮助我学习/理解如何解决这个问题,我将不胜感激!
这里是简化的示例代码:
JSON 对象:
data: [
{ id: 1, isTrue: false },
{ id: 2, isTrue: false },
{ id: 3, isTrue: false},
...
]
反应组件:
import exampleData from 'data.js'
class App extends Component {
constructor () {
super()
this.state = {
isTrue: //I need to set the current state of isTrue to render from exampleData, but couldn't figure out how to do it.//
}
this.handleToggle = this.handleToggle.bind(this);
}
handleToggle (e) {
e.preventDefault();
this.setState(prevState => ({
isTrue: !prevState.isTrue
}))
}
render() {
return(
<div className="App">
{exampleData.data.map((obj) => {
return <ReactCardFlip isTrue={this.state.isTrue}/>
<button onClick={handleToggle}>Flip the card</div>
</ReactCardFlip>
})
</div>
);
}
}
export default App;
【问题讨论】:
-
您将单个状态映射到 exampleData 中的所有对象。您的状态不能是单个 True/False。每个对象都必须有一个 True/False 并翻转触发 onClick 的那个对象的状态。
标签: javascript arrays json reactjs state