javascript - 如何在 react.js 中动态切换 'className'?

标签 javascript css reactjs

我想在 react.js 中动态设置 active 类,但它不起作用! 我正在使用 setState() 方法来更改所选元素。

这行代码不起作用。 className={selectedCategoryId === item.id ? '事件':''}

我认为 setState() 函数不能正常工作...

const {open, selectedProduct, productCategory, filteredProducts, selectedCategoryId} = this.state;
const categoryItems = productCategory.map((item) =>
    <a key={item.id}
       onClick={() => this.handleFilter(item.id)}
       className={selectedCategoryId === item.id ? 'active' : ''}
       // className={()=>this.isActive(item.id)}
       className="pointer"
    >{item.value}</a>
);

这不会改变类:

handleFilter = (id) => {
    const filteredItem = this.state.productList.filter(x => x.categoryId == id);
    this.setState({filteredProducts: filteredItem, selectedCategoryId: id});  
}

但这会在选择所有标签时正确更改类名:

handleRemoveFilter = () => {
    this.setState({filteredProducts: this.state.productList, selectedCategoryId: 0});
}
//-------------------------------
<div className="tag-list">
    <a  onClick={this.handleRemoveFilter}
        className="pointer"
        className={ this.state.selectedCategoryId === 0 ? 'active' : ''}
    >All tags</a>
    {categoryItems}
</div>

最佳答案

如果 setState() 运行良好,试试这个:

<a onClick={this.handleRemoveFilter}
        className={ this.state.selectedCategoryId === 0 ? 'pointer active' : 'pointer'}
>All tags</a>

关于javascript - 如何在 react.js 中动态切换 'className'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55352295/

相关文章:

javascript - gatsby/react 中多维数组上的 map() 方法,尝试将内部循环包装在 div 中时出现错误

javascript - React-Redux:映射对象数组并从每个对象初始化一个组件

javascript - 如何附加带有子元素的元素?

jquery - 无法获取垂直对齐 : top to work correctly for inline-block, 固定高度元素。

javascript - 如何在php中的datagrid中显示单个数据

javascript - 如何在 javascript 中使用 map() 从 javascript 对象中提取数据?

javascript - 移除父元素

javascript - 在特定状态下启动 Alexa Skill

css - 文本对齐中心不适用于移动浏览器

reactjs - Context.Consumer 与 useContext() 访问 Context.Provider 传递的值