@venanen

Почему не приходит состояние в connect()()?

У меня есть store, с редьюсером, в котором по клику на кнопку я диспатчу соответственный action. Тут все работает.
Потом я подписываю другой компонент следующим образом:
const matchStateToProps = (state)=>{
	return {
		title: state.title,
		text: state.text
	}
}
export default connect(matchStateToProps)(Notes)

Этот код не запускается с ошибкой
TypeError: Cannot read property 'title' of undefined
, ошибка как раз в
return {
		title: state.title,
		text: state.text
	}

Я конечно могу сделать проверку на state:
const matchStateToProps = (state)=>{
        if(!state) return {}
	return {
		title: state.title,
		text: state.text
	}
}
export default connect(matchStateToProps)(Notes)

И это действительно работает, но так же не должно быть.

Код store:
import {createStore} from 'redux'
const notesReducer = (state = {text: "", title: ""}, action)=>{
	console.log(state)
	switch(action.type){
		case "ADD_NOTES":
			return {...state, "text" :action.text, "title":action.title}
		break;
		case 'NOTE_DID_LOAD':
			return {state}
		break;
		default:
			console.log("Unreal dispatching ", action)
	}
}
export default createStore(notesReducer);


P.S. В функции matchStateToProps я делал вывод в консоль переменной state, там в первый момент времени пустота, хотя не должна быть, я же задал начальное состояние?
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
default:
  return state;

По-умолчанию редьюсер должен возвращать не измененное состояние.
Первый аргумент connect правильно называть mapStateToProps
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы