React Redux组件传递道具不会重新渲染

时间:2020-09-16 09:43:11

标签: reactjs react-redux

我正在使用带有react-redux包的React,并且已经创建了Redux组件。

import React from 'react'
import { connect } from 'react-redux'

class Prova extends React.Component {
    constructor(props) {
        super(props)
        this.state = { ...props }
    }

    componentDidUpdate(prevProps) {
        if (prevProps.errors !== this.props.errors) {
            this.setState({
                errors: this.props.errors
            });
        }
    }

    render() {

        const props = this.props.errors ? <div>props: {Object.keys(this.props.errors).map(prop => <div className='props'>{prop}</div>)}</div> : <>NO ERRORS</>

        return (
            <div>
                {props}
            </div>
        )

    }
}

function mapState(state, ownProps) {
    return {
    }
}

const actionCreators = {
}

const connectedProva = connect(mapState, actionCreators)(Prova)
export { connectedProva as Prova }

我这样称呼这个组件:

<Prova errors={this.state.errors} />

在父组件状态下存储和更新错误的位置。

问题是错误不会在redux的存储状态下更新,而是在组件的状态下更新,并且此值作为“简单”道具传递给Prova组件。但是更新Parent状态不会重新呈现Prova组件。

是否有可能使用Redux组件隐藏传递的道具?仅在首次创建Prova组件时才读取它们。

谢谢

编辑:

最后,我理解了这个问题。 在更新错误状态的父组件中,我并没有破坏错误的上一版本,而是填充了新数据。 现在正在将其更改为:

var errors = { ...prevErrors }

谢谢

0 个答案:

没有答案