当前位置: 首页 > 面试题库 >

Reactjs-在子组件中使用setState从道具设置状态

萧宏远
2023-03-14
问题内容

我有以下基于渲染下拉列表呈现用户的类。如果我选择“字母”,则将按字母顺序列出用户;当我选择“组”时,将按组顺序列出用户。

render(){
    return(
        const {members, sort} = this.state
        { sort === "alphabetical" && <SortByAlphabet members={members} /> }
        { sort === "group" && <SortByGroup members={members}/> }
    )
)

<SortByAlphabet />组件中,我正在通过props.members中的componentWillReceiveProps()函数设置组件状态对象。

componentWillReceiveProps = props => {
    this.setState({ members : props.members });
}

当我选择“组”排序时,<SortByAlphabet />组件正在卸载并且<SortByGroup />正在DOM中安装。同样,当我切换回“字母”排序时,在<SortByAlphabet />组件中预先设置的状态变量(成员)将变为NULL,因为该组件已从DOM中删除。

componentWillReceiveProps重新渲染<SortByAlphabet />b’coz时道具未更改时,该功能未触发第二次。但是我想像在componentWillReceiveProps函数中第一次那样更新状态变量。

怎么做?


问题答案:

componentWillMount在组件生命周期中仅在呈现组件之前被调用一次。它通常用于执行初始渲染之前所需的任何状态更改,因为在此方法中调用this.setState不会触发其他渲染,因此您可以使用来更新状态

componentWillMount ()
{

        this.setState({ members : props.members });


}


 类似资料:
  • 我试图了解如何构建具有不同"页面"或"视图"的ReactJS应用程序。 我将以下组件作为我的基础应用程序,并且我正在React状态中使用currentState属性在视图中的活动组件之间切换。 它执行此任务,但在启动dataLoaded回调时,组件从不接收更新的recipes数组。 如何根据应用程序中的更新状态更新道具? 还是我处理这整件事的方式错了?

  • 我实际上正在学习reactjs,并且实际上正在开发一个小的TODO列表,包装在一个名为TODO的“父组件”中。 我决定将初始化移到componentDidMount内部,但这似乎是一个反模式,我需要另一个解决方案。你能帮我吗? 下面是我的实际代码:

  • 以下是: code>button.jsx的来源并不重要,它有一个常规的HTML单选按钮,触发本机DOM事件 预期流量为: null 尝试:在的onChange处理程序中: 问题: 尝试:在的onChange处理程序中:

  • 我第一个反应项目的第一个问题。 我试图找出如何在特定的onClick链接上对组件产生最佳效果,以便能够重新触发此效果,而不受页面上其他链接的影响。前两个问题是有效的,但我似乎没有其他链接不影响组件。 我有一个DisplayLightbox组件在我的页面上接受几个值 我想要触发lightbox的链接正在调用一个设置状态(并发送道具)的函数。这部分似乎很好用。 在我的DisplayLightbox组件

  • 是否更像React的方法,使我们的模型属性,并在保存之前将其编译回模型,如下所示: 这不需要调用,但是随着模型的增长,(post可能有作者、主题、标记、注释、评分等)组件开始变得非常复杂。 第一种方法是ReactLink吗?

  • 2)有没有另一种方法可以重写这个逻辑而不使用道具来设置状态? 父组件: 子组件