Перезагрузить рендеринг после смены реквизита с помощью Redux? - PullRequest
0 голосов
/ 28 апреля 2018

Я использую избыточность в своих приложениях. есть только одно состояние, это определение. Я могу изменить состояние и сделать экран. но всякий раз, когда я изменяю состояние реквизита, я не могу перезагрузить экран.

Код:

остросюжетный types.js

export const SET_NOTIFICATION = "SET_NOTIFICATION";

action.js

import {
    SET_NOTIFICATION,
} from "./action-types";

let initialState = {
    notyIndex: 0,
};

export const setNotyIndex = (notyIndex) => ({type: SET_NOTIFICATION, notyIndex});

reducer.js

import {
    SET_NOTIFICATION,
} from "./action-types";

let initialState = {
    notyIndex: 0,
};

export default reducer = (state = initialState, action) => {
    switch (action.type) {
        case SET_NOTIFICATION:
            return Object.assign({}, state, {notyIndex: action.notyIndex});
            break;
        default:
            return initialState;
            break;
    }
};

Я подключаю редукс, как показано ниже. DashBoard.js

import { setNotyIndex } from "./action";
import {connect} from "react-redux"

********* НАЧАЛО ЖИЗНЕННОГО ЦИКЛА ************

 componentWillMount(){
  console.log('Call update');
  console.log('Index is',this.props.notyIndex);
 }

 shouldComponentUpdate=()=>{
    return true
  }
 componentDidUpdate=(prevProps, prevState, snapshot)=>{
    console.log('Call update');
    console.log('Index is',this.props.notyIndex);
  }

 componentDidMount() {
     console.log('Call update');
     console.log('Index is',this.props.notyIndex);
  }

********* КОНЕЦ ЖИЗНИ ЦИКЛ ************

const mapDispatchToProps = (dispatch) => {
  return {
      setNotyIndex: (notyIndex) => dispatch(setNotyIndex(notyIndex)),
  }
};

const mapStateToProps = (state) => {
    if (state === undefined) {
        return {};
    }
    return {
        notyIndex: state.notyIndex,
    }
};


connect(mapStateToProps, mapDispatchToProps)(DashBoard);

значение устанавливается как.

setNotyIndex(1);

- Как и в предыдущем коде, ни один метод жизненного цикла не вызывается после установки значения.

Спасибо.

1 Ответ

0 голосов
/ 28 апреля 2018

Сначала, когда вы используете метод Избыточности, вы должны вызывать с

this.props.setNotyIndex(1);

и когда вы используете в своем компоненте правдоподобный резерв, вы должны использовать

this.props.notyIndex

Вы можете использовать консоль в своем методе mapStateToProps , чтобы получать изменения, как в

const mapStateToProps = (state) => {
console.log("State veriable : ", state)
if (state === undefined) {
    return {};
}
return {
    notyIndex: state.notyIndex,
}

};

Когда вы изменяете свой избыточный проверяемый и если вы используете этот проверяемый в своем коде, то относительный компонент переопределяет его как бы. Но если возникнет какая-то проблема, вы можете вызвать setState вручную после вызова метода избыточности, как в

this.props.setNotyIndex(1);
this.setState({
* * 1016});

Я надеюсь, что это сработает для вас .......

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...