Reactjs 在构造函数外部创建新的状态变量

Reactjs 在构造函数外部创建新的状态变量,reactjs,create-react-app,Reactjs,Create React App,我试图从已经是状态变量的数组中的数据中生成多个状态变量名。所需的变量数量可以随着页面加载的不同而变化,因此我无法立即对它们进行初始化 我已经在下面设置了一个函数,我相信它应该做我想要做的事情,但是我不知道应该把它放在组件中的什么位置 makeButtons() { this.state.Buttons.forEach((button) => { let key = button.fields.Label this.setState({ [key]:

我试图从已经是状态变量的数组中的数据中生成多个状态变量名。所需的变量数量可以随着页面加载的不同而变化,因此我无法立即对它们进行初始化

我已经在下面设置了一个函数,我相信它应该做我想要做的事情,但是我不知道应该把它放在组件中的什么位置

makeButtons() {
    this.state.Buttons.forEach((button) => {
        let key = button.fields.Label

        this.setState({ [key]: '' })
    }); 

}
我尝试在render()中调用它,但这只会给我一个无限循环错误,这是有意义的。有什么想法吗

编辑:尝试调用componentDidMount(),但似乎也不起作用。不确定会有什么问题。代码如下

base('ButtonInfo').select({view: 'Grid view' }).eachPage(
            (Buttons, fetchNextPage) => {
                this.setState({
                    Buttons
                });
                fetchNextPage();
            }
        );
        this.state.Buttons.forEach((button) => {
            let key = button.fields.Label

            this.setState({ [key]: '' })
       }); 

编辑:答案在下面的注释中,我需要在api调用之前添加wait并使componentDidMount()异步。

在componentDidMount()中执行该操作如何?此方法仅在应用程序第一次呈现后调用一次,通常用于使用一些数据初始化应用程序。

在componentDidMount()中执行此操作如何?此方法仅在应用程序第一次呈现后调用一次,通常用于使用一些数据初始化应用程序。

哪个事件应触发新状态属性的创建?是否存在API调用、单击按钮或任何其他异步事件?我希望在API调用后创建这些事件,以获取它们所使用的数组。API调用发生在componentDidMount()中,并且工作正常。哪个事件应该触发新状态属性的创建?是否存在API调用、单击按钮或任何其他异步事件?我希望在API调用后创建这些事件,以获取它们所使用的数组。API调用发生在componentDidMount()中,并且可以很好地工作,但是似乎没有创建变量。我有下面的代码。我格式化有什么问题吗<代码>基本('ButtonInfo')。选择({view:'Grid view'})。每个页面((按钮,fetchNextPage)=>{this.setState({Buttons});fetchNextPage();});this.state.Buttons.forEach((button)=>{let key=button.fields.Label this.setState({[key]:''})代码似乎很好。在进行API调用时是否使用wait?不,API调用似乎工作正常,因为我可以使用React-Dev工具查看拉入的数据。如果我将console.log('someString')语句放在新的状态变量创建块周围,它们都会被记录,但不会生成变量。由于某种原因,它似乎跳过了该块,如果这使得senseading在API调用修复它之前等待,感谢您的帮助尝试,但是变量似乎没有被创建。我有下面的代码。我格式化有什么问题吗<代码>基本('ButtonInfo')。选择({view:'Grid view'})。每个页面((按钮,fetchNextPage)=>{this.setState({Buttons});fetchNextPage();});this.state.Buttons.forEach((button)=>{let key=button.fields.Label this.setState({[key]:''})代码似乎很好。在进行API调用时是否使用wait?不,API调用似乎工作正常,因为我可以使用React-Dev工具查看拉入的数据。如果我将console.log('someString')语句放在新的状态变量创建块周围,它们都会被记录,但不会生成变量。由于某种原因,它似乎跳过了该块,如果这使它有意义的话,请等待API调用修复它,谢谢您的帮助