Задать вопрос
@KnightForce

Почему не срабатывает функция connect() из Redux?

Пишу как по документации:

App.js:
import React, {Component, PropTypes} from 'react';
import {render} from 'react-dom';
import {combineReducers, createStore} from 'redux';
import {connect} from 'react-redux';
import players from "./reducers/players_reduce";
import order from "./reducers/order_reduce";
import steps from "./reducers/steps_reduce";
import fields from "./reducers/fields_reduce";
import chip from "./reducers/chip_reduce";
import current_player from "./reducers/current_player_reduce";
import reload from "./reducers/reload_reduce";
import initialState from "./initialState";

let rootReducer = combineReducers({
	players, order, steps, fields, chip, current_player, reload
});

let store = createStore(rootReducer, initialState);

class App extends Component {
	constructor(props) {
		super(props);
		this.props = props;
	}

	render() {
		return (<div>
					{this.props.children};
				</div>);
	}
};

export default connect(store)(App);
export {store};


index.js:

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

import ReactIgnore from './ReactIgnore';
import App, {store} from './App';

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


Выдает:

Uncaught Error: _registerComponent(...): Target container is not a DOM element.


Но если пробую написать в App.js так:
export default connect(store)(render(App, document.getElementById("AppRoot"))); 
export {store};

<div id="AppRoot"></div>Находится в index.html.

То ожидаемо ругается:

Uncaught Error: ReactDOM.render(): Invalid component element. Instead of passing a class like Foo, pass React.createElement(Foo) or .


В чем дело? Подключение, по документации не хочет работать, а если рендерить для connect, то не оборачивается в <Provider/>.
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
Laiff
@Laiff
Front-end developer
Проблема вот тут рендерим в document.getElementById('root') а в доме есть только <div id="AppRoot"></div>
Второй способ в корне не верный, так как оборачивается уже отрендеренный элемент
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽