как увеличить простой счетчик с помощью приставки - PullRequest
0 голосов
/ 11 января 2019

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

https://codesandbox.io/s/61663y47qn?initialpath=%2F

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вот проблемы, с которыми вы сталкиваетесь

в ActionCreator

у вас есть этот код

import * as Types from "./Types";

export const incCounter = state => ({
  Type: Types.INC_COUNTER,
  payload: state++
});

правильный должен быть

import * as Types from "./Types";

export const incCounter = state => ({
  type: Types.INC_COUNTER,
  payload: state
});

Type должно быть type, и вам не нужно увеличивать состояние здесь, что должно происходить в редукторе.


в counterReducer у вас есть

export const counterReducer = (state = counterInitialState, action) => {
  switch (action.Type) {
    case Types.INC_COUNTER:
      return { ...state, state: action.payload++ };
    default:
      return state;
  }
};

правильный код должен быть

export const counterReducer = (state = counterInitialState, action) => {
  switch (action.type) {
    case Types.INC_COUNTER:
      return {...state, counter: ++action.payload};
    default:
      return {...state};
  }
};

Опять же, Type должно быть type, и перед назначением состояния должно произойти приращение, action.payload++ неверно, оно должно быть ++action.payload


в index.js

у вас есть это

const mapDispatchToProps = state => ({
  updateCounter: () => incCounter(state)
});

, который должен быть

const mapDispatchToProps = dispatch => ({
  updateCounter: state => dispatch(incCounter(state))
});

Наконец, у вас есть

<button onClick={incCounter(props.currentCounter)}>Update counter</button>

которое должно быть

<button onClick={props.updateCounter.bind(null, props.currentCounter)}>Update counter</button>

Вы не хотите выполнять функцию, вы хотите передать функцию как обработчик щелчков, и если вы хотите передать ей какой-либо аргумент, вы можете связать ее с помощью функции bind. Просто будьте осторожны с первым аргументом, переданным bind =>, это контекст выполнения, а не первый аргумент функции, ваш аргумент идет вторым.

Рабочий код можно найти здесь. https://codesandbox.io/s/8nyjxvp2k9

0 голосов
/ 11 января 2019

Вот рабочая версия:

Edit redux counter

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

...