【发布时间】:2019-01-19 19:27:03
【问题描述】:
我一直在构建一个 React 和 Redux 应用程序。我创建了一个简单的容器和一个动作创建者,它使用一个简单的 console.log() 执行一个动作,其中一个用户是我在状态(reducer)中写下的。
问题是,当我点击渲染状态时,它说“用户”未定义。为什么?我该怎么做才能让函数识别状态?
容器
import React, { Component } from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {selectUser} from '../actions/index';
class UserList extends Component {
renderUser() {
return <div onClick={this.props.selectUser(user)}>
{this.props.users[0].giovanni}
</div>
}
render() {
return (
<div>{this.renderUser()}</div>
);
}
}
function mapStateToProps(state) {
return {
users: state.users
}
}
function matchDispatchToProps(dispatch) {
return bindActionCreators({selectUser: selectUser}, dispatch);
}
export default connect(mapStateToProps, matchDispatchToProps)(UserList);
动作
export const selectUser = (user) => {
console.log('yo how are you?', user.users[0]);
return {
type: 'USER_SELECTED',
payload: user
}
}
减速器
export default function () {
return [
{
giovanni: 'operaio',
marco: 'vigile',
luca: 'esattore',
}
]
}
索引缩减器
import {combineReducers} from 'redux';
import reducerMain from './reducer_main';
const allReducers = combineReducers({
users: reducerMain
});
export default allReducers;
【问题讨论】:
-
您希望
user变量是什么? -
这是一个虚拟参数,用于让 'giovanni: Operaio' 渲染
-
奇怪的是operaio被渲染了,但是当我调用动作'user'时它没有定义
标签: javascript reactjs redux