Я думаю, что вы все делаете правильно, пока не доберетесь до компонента (хотя его трудно полностью определить без реального тестирования кода). Основная проблема в том, насколько я вижу, что вы на самом деле не отправляете действие, поэтому login.user
никогда не устанавливается.
У метода connect
response-redux есть два функциональных параметра - mapStateToProps
, который вы используете правильно, и mapDispatchToProps
, который не похож на вас Используем.
mapDispatchToProps
- это метод для передачи действий Redux в реквизит, который при вызове запускает действие, которое, в свою очередь, принимается редуктором, который возвращает новый объект состояния , Создайте новый каталог с именем actions
в root вашего приложения. Внутри него создайте файл с именем loginActions.js
и поместите в него что-то вроде следующего:
export function setCurrentUser(user) {
return (dispatch) => {
dispatch({ type: 'SET_CURRENT_USER', user)
}
}
импортируйте эту функцию в свой компонент, затем в функцию соединения добавьте mapDispatchToProps
import { connect } from 'react-redux'
import { setCurrentUser } from './actions/loginActions'
// component code
const mapDispatchToProps = {
setCurrentUser: setCurrentUser
}
const mapStateToProps = (state) => {
return {
login: state.login
}
}
connect(mapStateToProps, mapDispatchToProps)(YourComponentName)
В вашем методе componentDidMount
вы можете вызывать это действие:
componentDidMount() {
this.props.setCurrentUser('myUser')
}
в componentDidUpdate
, пользователю теперь должно быть доступно:
componentDidUpdate(prevProps) {
if (prevProps.login !== this.props.login) {
console.log(this.props.login)
}
}
Надеюсь, это поможет. Дайте мне знать, если вам нужна дополнительная помощь.