Пользовательский интерфейс не обновлялся с помощью React-redux в Mac OS

#javascript #reactjs #macos #user-interface #react-redux

#javascript #reactjs #macos #пользовательский интерфейс #react-redux

Вопрос:

Проблема проявляется в Mac OS, и она хорошо работает в Windows.

Это демо. При нажатии кнопки количество count не увеличилось, по-прежнему 0. Но при просмотре состояния в react dev-tool количество значений состояния действительно увеличивалось при нажатии кнопки. А reducer — это чистая функция, при изменении состояния она просто генерирует новый объект.

Ниже приведен код:

 import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import { createStore } from 'redux'
import { Provider, connect } from 'react-redux'

// React component
class Counter extends Component {
  render() {
    const { value, onIncreaseClick } = this.props
    return (
      <div>
        <span>{value}</span>
        <button onClick={onIncreaseClick}>Increase</button>
      </div>
    )
  }
}

// Action
const increaseAction = { type: 'increase' }

// Reducer
function counter(state = { count: 0 }, action) {
  const count = state.count
  switch (action.type) {
    case 'increase':
      return { count: count   1 }
    default:
      return state
  }
}

// Store
const store = createStore(counter)

// Map Redux state to component props
function mapStateToProps(state) {
  return {
    value: state.count
  }
}

// Map Redux actions to component props
function mapDispatchToProps(dispatch) {
  return {
    onIncreaseClick: () => dispatch(increaseAction)
  }
}

// Connected Component
const App = connect(
  mapStateToProps,
  mapDispatchToProps
)(Counter)

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
)
  

Я думаю, что это просто в коде. Но я не могу сказать, почему. Проблема возникает только в Mac OS, как в Chrome, так и в Safari.

Кто-нибудь может мне помочь?

Комментарии:

1. Ваш редуктор выглядит подозрительно для меня.

2. показать полный код компонента вашего приложения?

3. ваш код работает без проблем. codesandbox.io/s/p90okzonj0

4. @ShubhamKhatri Код действительно хорошо работает в ОС Windows, которую я пробовал. Но проблема возникла в macOS, как в Chrome, так и в safari.

5. Получаете ли вы какое-либо сообщение об ошибке. потому что вполне возможно, что вы, возможно, не соблюдали чувствительность к регистру при работе с файлами или компонентами в своем коде

Ответ №1:

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