Как я могу заставить это приложение React / Redux правильно отображаться? - PullRequest
0 голосов
/ 13 марта 2020

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

Вот полный код.

import {render} from 'react-dom';
import {Provider, createStore} from 'redux';
import {connect} from 'react-redux';

// Redux:
const ADD = 'ADD';

const addMessage = (message) => {
  return {
    type: ADD,
    message: message
  }
};

const messageReducer = (state = [], action) => {
  switch (action.type) {
    case ADD:
      return [
        ...state,
        action.message
      ];
    default:
      return state;
  }
};

const store = Redux.createStore(messageReducer);

// React:
// const Provider = ReactRedux.Provider;
// const connect = ReactRedux.connect;

// Change code below this line
class Presentational extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      input: '',
      messages: []
    }
    this.handleChange = this.handleChange.bind(this);
    this.submitMessage = this.submitMessage.bind(this);
  }
  handleChange(event) {
    this.setState({
      input: event.target.value
    });
  }
  submitMessage() {
    this.setState({
      input: '',
      messages: this.state.messages.concat(this.state.input)
    });
  }
  render() {
    return (
      <div>
        <h2>Type in a new Message:</h2>
        <input
          value={this.state.input}
          onChange={this.handleChange}/><br/>
        <button onClick={this.submitMessage}>Submit</button>
        <ul>
          {this.state.messages.map( (message, idx) => {
              return (
                 <li key={idx}>{message}</li>
              )
            })
          }
        </ul>
      </div>
    );
  }
};
// Change code above this line

const mapStateToProps = (state) => {
  return {messages: state}
};

const mapDispatchToProps = (dispatch) => {
  return {
    submitNewMessage: (message) => {
      dispatch(addMessage(message))
    }
  }
};

const Container = connect(mapStateToProps, mapDispatchToProps)(Presentational);

class AppWrapper extends React.Component {
  render() {
    return (
      <Provider store={store}>
        <Container/>
      </Provider>
    );
  }
};



render(<AppWrapper/>, document.getElementById("root"))

1 Ответ

1 голос
/ 14 марта 2020

Компонент Provider из пакета react-redux. Не redux. Импортируйте его правильно, и он будет работать.

import { createStore } from 'redux';
import { connect, Provider } from 'react-redux';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...