reactjs表示组件在redux状态更改时未重新呈现

Xanld

情况我有一个使用redux的reactjs应用程序。我有一个容器和一个演示组件。我的演示文稿组件呈现了一个带有简单文本输入字段数组的表单,并且我将一个“ onChange”回调函数从容器传递给了演示文稿组件,当在其中键入文本字段之一时,该分派一个动作来更改redux状态。

问题演示文稿组件安装时,演示文稿组件成功地从redux状态为文本字段呈现了正确的值,但是当我在字段中键入内容时,该组件并没有更新。如果我将传递到表示组件的道具记录mapStateToProps在容器中,则可以看到onChange函数已正确调度到商店,并且redux状态正在正确更新。但是,发生这种情况时,表示组件不会重新渲染,因此在文本字段中键入不会更新视图(键入不会执行任何操作)。

formConnector

    import { connect } from 'react-redux'
    import Form from '../components/Form'
    import { changeElementValue } from '../actions/actions'

    const mapStateToProps = (state) => {
        //e.g. state.elements = [{id:"email", value:"[email protected]"}]
        let props = {
            elements: state.elements,
        }

        //state and props.elements.{id}.value changes successfully when I 
        //type in one of the input fields, but
        //the the Form component is not re-rendered
        console.log(props) 

        return props
    }

    const mapDispatchToProps = (dispatch) => {
        return {
            onElementChange: (id, value) => {
                dispatch(changeElementValue(id, value))
            },
        }
    }

    export default connect(mapStateToProps, mapDispatchToProps)(Form)

缩径机

    function formReducer(state = initialState, action = null) {
        switch(action.type) {
            case types.CHANGE_ELEMENT_VALUE:
                let newState = Object.assign({}, state)
                newState.elements[action.id].value = action.value
                return newState

            default:
                return state;
        }
    }

行动

    import * as types from './actionTypes'

    export function changeElementValue(id, value) {
        return { type: types.CHANGE_ELEMENT_VALUE, id, value }
    }
或B

如评论中所述,这是由于状态突变。

尝试如下更改减速器代码:

case types.CHANGE_ELEMENT_VALUE: {
    const newElements = state.elements.map(function(el, index) {
        return action.id === index 
            ? Object.assign({}, el, { value: action.value }) 
            : el;
    });
    return Object.assign({}, state, { elements: newElements );
}

或更优雅:

case types.CHANGE_ELEMENT_VALUE:
    return { ...state, elements: state.elements.map((el, index) => (
        action.id === index ? { ...el, value: action.value } : el
    )}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

功能组件在状态更改时重新呈现

来自分类Dev

状态更改后,react-redux组件未重新呈现

来自分类Dev

React-redux组件不会在商店状态更改时重新呈现

来自分类Dev

React + Redux:组件不会在状态更改时重新呈现

来自分类Dev

状态更改时,react组件中的输入元素的值未重新呈现

来自分类Dev

React组件不会在状态更改时重新呈现

来自分类Dev

组件不会在状态更改时重新呈现

来自分类Dev

子组件在每个状态更改时都重新呈现

来自分类Dev

通过其同级触发状态更改时,子组件不会重新呈现

来自分类Dev

同级组件不会在状态更改时重新呈现(使用useEffect,useState和Context)

来自分类Dev

react native:如何在状态更改时停止子组件的重新呈现?

来自分类Dev

想要在redux中的状态更改时重新呈现表行

来自分类Dev

Reactjs:为什么子组件不会在数据更改时重新呈现?

来自分类Dev

Reactjs:为什么子组件不会在数据更改时重新呈现?

来自分类Dev

组件未在 redux 状态更改时更新

来自分类Dev

当数组未更改时,具有数组属性的React / Redux / Pure Component重新呈现

来自分类Dev

组件尺寸更改时未清除状态

来自分类Dev

React + Redux更新状态未重新呈现

来自分类Dev

由于父级重新渲染,ReactJS计算组件道具更改时的状态

来自分类Dev

反应不会在状态更改时重新呈现

来自分类Dev

React不会在状态更改时重新呈现

来自分类Dev

文件状态更改时Vue.js不重新呈现

来自分类Dev

列表 jsx 未在状态更改时重新呈现

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

当 redux 更改商店中的状态时,我的 reactJS 应用程序不会重新呈现

来自分类Dev

当 prop 更改时,无状态组件不会重新渲染

来自分类Dev

Redux存储正在更新,但组件未重新呈现

来自分类Dev

Redux存储正在更新,但组件未重新呈现

来自分类Dev

状态更改后功能组件不会重新呈现[React]

Related 相关文章

  1. 1

    功能组件在状态更改时重新呈现

  2. 2

    状态更改后,react-redux组件未重新呈现

  3. 3

    React-redux组件不会在商店状态更改时重新呈现

  4. 4

    React + Redux:组件不会在状态更改时重新呈现

  5. 5

    状态更改时,react组件中的输入元素的值未重新呈现

  6. 6

    React组件不会在状态更改时重新呈现

  7. 7

    组件不会在状态更改时重新呈现

  8. 8

    子组件在每个状态更改时都重新呈现

  9. 9

    通过其同级触发状态更改时,子组件不会重新呈现

  10. 10

    同级组件不会在状态更改时重新呈现(使用useEffect,useState和Context)

  11. 11

    react native:如何在状态更改时停止子组件的重新呈现?

  12. 12

    想要在redux中的状态更改时重新呈现表行

  13. 13

    Reactjs:为什么子组件不会在数据更改时重新呈现?

  14. 14

    Reactjs:为什么子组件不会在数据更改时重新呈现?

  15. 15

    组件未在 redux 状态更改时更新

  16. 16

    当数组未更改时,具有数组属性的React / Redux / Pure Component重新呈现

  17. 17

    组件尺寸更改时未清除状态

  18. 18

    React + Redux更新状态未重新呈现

  19. 19

    由于父级重新渲染,ReactJS计算组件道具更改时的状态

  20. 20

    反应不会在状态更改时重新呈现

  21. 21

    React不会在状态更改时重新呈现

  22. 22

    文件状态更改时Vue.js不重新呈现

  23. 23

    列表 jsx 未在状态更改时重新呈现

  24. 24

    React:子组件未在父状态更改时呈现

  25. 25

    当 redux 更改商店中的状态时,我的 reactJS 应用程序不会重新呈现

  26. 26

    当 prop 更改时,无状态组件不会重新渲染

  27. 27

    Redux存储正在更新,但组件未重新呈现

  28. 28

    Redux存储正在更新,但组件未重新呈现

  29. 29

    状态更改后功能组件不会重新呈现[React]

热门标签

归档