reactjs - 使用数组索引为字体颜色反应 setState
问题描述
我很难理解 setState。我能够更改颜色,但所有数组项都使用此代码变为红色。我是新手,所以请在这里帮助我
{class.map((c, index) => (
<Link style={{color: this.state.fcolor}} key={index} onClick={(e) => {
this.handleChangeColor(index) }}>
{c.classname}<i className="fa fa-check"> </i>
</Link>
))}
handleChangeColor(event, index){
this.setState({
fcolor: "red"
})
}
我希望它专门使用索引但是当我添加索引时
fcolor[index]:'red' 运行 tru 一个需要 ',' 的错误
解决方案
那是因为您的所有链接可能共享相同的状态。显示活动链接的一个好模式是存储活动 ID 以指定该链接应显示为红色。
您可以从https://www.digitalocean.com/community/tutorials/react-tabs-component找到的这个 Tab 组件激发您的灵感
class Tab extends Component {
static propTypes = {
activeTab: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired,
};
onClick = () => {
const { label, onClick } = this.props;
onClick(label);
}
render() {
const {
onClick,
props: {
activeTab,
label,
},
} = this;
let className = 'tab-list-item';
if (activeTab === label) {
className += ' tab-list-active';
}
return (
<li
className={className}
onClick={onClick}
>
{label}
</li>
);
}
}
export default Tab;
推荐阅读
- jvm - 是否可以同时对 alloc 和 itimer 使用 async-profiler
- python - Django-Import-Export:导入错误 - AttributeError:“str”对象没有属性“year”
- firebase - 可以在 main 中调用 firebase.initializeApp()
- javascript - 两个 Javascript 日期之间的时差
- node.js - 找不到模块“约翰尼五”?
- ios - Swift UI - HostingController 添加了不需要的导航栏
- java - android studio 缺少类向导
- javascript - 对象数组不使用 setState 和 map 渲染
- arrays - 在 React 组件中访问 JSON 数组中的对象
- javascript - 来自 Heroku 和 Webpack 的配置变量