Reactjs 组件多次重新渲染并重复添加默认用户

Reactjs 组件多次重新渲染并重复添加默认用户,reactjs,redux,Reactjs,Redux,在这一点上,我无法再直接思考这个问题: 我有一个可以创建“基本”的应用程序。当访问新创建的基本组件时,该组件会获取一个用户列表,然后在新组件上呈现: componentDidMount() { this.props.dispatch(fetchUsersOfList()); } 后台的减速器将用户添加到状态(如果有)。默认值为: const initialState = { userBases: [], } 当访问新创建的组件时,我想添加(POST请求)一个默认用户(即基础的

在这一点上,我无法再直接思考这个问题:

我有一个可以创建“基本”的应用程序。当访问新创建的基本组件时,该组件会获取一个用户列表,然后在新组件上呈现:

componentDidMount() {
    this.props.dispatch(fetchUsersOfList());
}
后台的减速器将用户添加到状态(如果有)。默认值为:

const initialState = {
    userBases: [],
}
当访问新创建的组件时,我想添加(POST请求)一个默认用户(即基础的创建者)并显示它。我只希望这样做一次,并希望通过检查防止添加一次以上:

render() {
    if (
        this.props.userBases.length !== 0 &&
        this.props.currentBase.id !== undefined
    ) {
        const userName = this.props.currentAuthUser;
        const baseId = this.props.currentBase.id;
        const acceptedMembership = true;
        const isCreator = true;
        this.props.dispatch(
            addUserToList(baseId, userName, acceptedMembership, isCreator)
        );
    }

不知何故,我对if语句的理解非常混乱,这样的请求即使不是几百次,也会被激发几十次。汇编一个if语句返回一个简单的.map用户库(如果存在),或者添加并显示一个与用户库创建者同名的默认用户,这有多困难?

因为您在componentDidMount中调用fetchUsersOfList(),它将强制重新呈现。尝试将逻辑移到componentWillMount


编辑:每次在reducer中设置状态时,它也将强制重新渲染

这是一个坏主意:
注意:这些方法被认为是遗留的,您应该在新代码中避免它们:UNSAFE_component willmount()