如何通过单击其他元素来添加和删除元素的 class?在 React-redux 中

How to add and remove class of an element by clicking on other? in React-redux

我想通过单击 React-Redux 中的另一个元素来切换元素的 class。

对于 redux 实现,您将在第一个元素的点击事件上分派一个动作;第二个元素的 class 源自状态(它的 props 之一),因此当它响应点击而改变时,它会使用新的 class名字.

惯用的用法可能会将两个元素都包装在一个容器组件中,该容器组件编排了 props 和调度的事件;通常使用 connect 方法。

我解决了这个问题,请按照以下步骤操作:

完成点击的元素:

    class readMore extends Component {

    constructor(props) {
        super(props);

        this.state = {classToSend: true };
    }

    stateToRender(){
        (this.state.classToSend) ? this.setState({classToSend: false}) : this.setState({classToSend: true});
    }

    onClickHandler(){
        this.stateToRender();
        this.props.readMore(this.state.classToSend);
    }

    render(){
        return (
            <div onClick={() => this.onClickHandler()}
                className="readmore">
                <div className="readmore-btn">Read more</div>
            </div>
        );
    }
}

动作创作者:

export function readMore(class_something) {

    return {
        type: READ_MORE,
        payload: class_something
    };

}

减速器:

export default function (state="", action) {

    switch(action.type){

        case READ_MORE:

            return action.payload;
    }

    return state;
}

class 应该更改的其他元素:

export class XYZ extends Component{

    constructor(props){
        super(props);
    }

    renderClassNames(){
        let classname = "slide-tourInfo";

        if (this.props.readMore) {
            classname += " slide-tourInfo-scale";
        }

        return classname;
    }

    render(){
        return(
            <div className = {this.renderClassNames()}>

            </div>
        )
    }
}
   export default class MyClass extends Component{

        constructor(props){
            super(props);

            this.state {
                toggleClass: false
            }
        }

        toggleFunction = () => {
            this.setState({toggleClass: !this.state.toggleClass})
        }

        render(){
            return(
                <div>
                    <button onClick={this.toggleFunction}>ClickMe</button>
                    <div className={this.state.toggleClass?'classOnTrue':'classOnFalse'}></div>
                </div>
            )
        }
    }