REACTJS JSX рендеринг

#reactjs #render

Вопрос:

Я хочу повторно отобразить html в App.js что инициируется событием щелчка мыши.
При первой загрузке отображается компонент JSX <WaypointList waypoint_is_done={false} App={this}/> .
Но когда я нажму кнопку, он больше не будет отображать компонент JSX <WaypointList waypoint_is_done={true} App={this}/> снова.

 class App extends React.Component {

    constructor(props) {
        super(props);

        this.state = {
            content: this.index()//LETS LOAD CONTENT
        };

        this.index = this.index.bind(this);
        this.toggleDoneList = this.toggleDoneList.bind(this);
    };

    index() {

        return <WaypointList waypoint_is_done={false} App={this}/>;
    };
    //SET NEW RENDERER ONCLICK
    toggleDoneList(){

        console.log('click');
        this.setState({
            content: <WaypointList waypoint_is_done={true} App={this}/>
            //content: <div>see</div>
        });
    };

    render() {
        console.log(this.state.content);
        return this.state.content;
    };
}

ReactDOM.render(
    <App/>,
    document.getElementById('app')
);
 

Первый раз он запускает класс WaypointList, но когда я нажимаю кнопку «объект-готово-список», то нет

Он вызывает приложение.toggleDoneList, и приложение.render также запускается, и он получает правильный компонент JSX, но больше не запускает класс WaypointList

 class WaypointList extends React.Component {

    constructor(props) {

        super(props);
        this.App = props.App;
        this.state = {
            content: this.index(props)
        };

        this.index = this.index.bind(this);
    };

    index(props) {

        let rows = logistic_route_sheet_waypoint_rows;

        if (rows.length > 0) {

            return (
                <div className="map-listing">
                    <div className="object-done-listing noselect btn btn-success"
                         onClick={() => this.App.toggleDoneList()}>
                        <i className="fa fa-list" aria-hidden="true"></i>
                    </div>
                </div>
            );
        }
        return (null);
    };

    render() {

        return this.state.content;
    };
}
 

Это работает, если я установлю

 this.setState({
    content: <div>see</div>
});
 

но не с

 this.setState({
    content: <WaypointList waypoint_is_done={true} App={this}/>
});
 

В чем проблема ?

Ответ №1:

Я нашел решение для повторного отображения класса

я сделал «CustomEvent» «reRenderer» и вызываю функцию re_renderer вне react.