@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, там в первый момент времени пустота, хотя не должна быть, я же задал начальное состояние?
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
default:
  return state;

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

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

Похожие вопросы
21 нояб. 2024, в 17:47
7000 руб./за проект
21 нояб. 2024, в 17:30
1500 руб./за проект
21 нояб. 2024, в 17:22
7000 руб./за проект