【问题标题】:Reset the state before render in reactjs在reactjs中渲染之前重置状态
【发布时间】:2017-11-11 03:37:54
【问题描述】:

我正在使用 React with Meteor,我的数据来自 createContainer

export default createContainer((props) => {
const { search } = props.dataTables.favorites;
let data = [];

data = Meteor.user().favorites;

return { data };
}, StarredListView);

现在我想对状态初始化后的数据做一些处理

constructor(props) {
    super(props);

    this.state = {
        data: props.data
    };

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

现在我如何确保在渲染数据之前我的resetOldData 调用并重置状态。我在哪里可以调用这个函数来重置我的状态。

resetOldData() {
    Meteor.call('reset.old.favorite.data', (err, res) => {
        if (err) { this.props.renderAlert(err.reason, null, true); }
        if (res) {
            this.props.renderAlert(res.message);
            this.setState({ data: res });
        }
    });
}

【问题讨论】:

  • 那么...问题是什么?
  • 如何确保在渲染数据之前我的 resetOldData 调用并重置状态。我在哪里可以调用这个函数来重置我的状态。
  • @ZaidIqbal 你可以从反应生命周期钩子调用--componentWillMount()
  • @Ricky 我尝试了 componentWillMount() 函数但它不起作用我的状态保持不变

标签: reactjs meteor react-native


【解决方案1】:

您需要查看 React 生命周期文档:https://facebook.github.io/react/docs/react-component.html

您需要在非常具体的地方对传入的数据做出响应,以及这将如何影响组件的状态。

对状态的某些更改只属于组件生命周期中非常特定的位置。

【讨论】:

  • 我尝试过响应生命周期事件,但 ui 控件未显示更新状态的数据。
猜你喜欢
  • 2021-07-20
  • 2023-03-10
  • 1970-01-01
  • 2022-11-06
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
相关资源
最近更新 更多