我正在尝试遍历数组以呈现列表中的项目(以 react native )。每个项目都有一个按钮。当有人单击该按钮时,如何更改其背景颜色? 我已经尝试过.setState,但是问题是,它会更改列表中每个按钮的背景颜色。
this.setState({btnColor: 'red' });
我该怎么办?有没有办法动态创建新状态?
谢谢。
答案 0 :(得分:1)
您可以采用这种方法:
class App extends React.Component {
state = {
colors: {},
btnIds: [1, 2, 3]
};
render() {
return (
<div>
{this.state.btnIds.map(x => (
<button
onClick={() => {
this.setState(ps => ({
colors: {
...ps.colors,
[x]: "red"
}
}));
}}
style={{ backgroundColor: this.state.colors[x] || "" }}
>
{x}
</button>
))}
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.9/angular.min.js"></script>
<div id="root"/>
反应演示,尽管恕我直言同样适用于RN。