如何在渲染而不是componentDidUpdate中调用方法?

时间:2019-03-07 14:43:02

标签: reactjs

我想避免componentDidUpdate生命周期,并且想要在render中调用一个方法。由于我没有在该组件中加载数据,因此我想摆脱componentDidUpdate。

下面是代码,

export default class child extends React.Component {
    state = {
        query: '',
        data: null,
    };
    empty_id = 0xffffffff;

    componentDidMount() {
        this.set_open_data();
    }

    componentDidUpdate(prevProps) {
       if (prevProps.id !== this.props.id) {
            this.set_data();
       }
    }

    set_data = () => {
        if (!this.props.info) {
            return;
        }
        if (this.props.id === this.empty_id) {
            this.setState({data: null});
            return;
        }

        let data = {
            info: [],
            values: [],
        };
        const info = this.props.info;
        for (let i=0, ii=info.length; i < ii; i++) {
            if (info[i].meshes.includes(this.props.id)) {
                const info = info[i].info;
                const values = info[i].values;
                data = {
                    info: typeof info === 'string' ? info.split('\r\n') : [],
                    values: values ? values : [],
                };
                break;
            }
        }
        this.setState({data: this.filter_data(data, this.state.query)});
      };
      render = () => {
          /* i want to call set_data here but should not sure of when to be 
         called meaning condition like in componentdidupdate method*/
         this.set_data();};}

有人可以帮我解决这个问题吗?谢谢。

0 个答案:

没有答案