【发布时间】:2019-01-25 07:45:02
【问题描述】:
我有一个 react / Redux 应用程序。问题是我想在组件的状态下渲染一个元素列表,而这个列表在渲染方法执行时总是空的,我不能使用它。
这些元素来自 API 调用。
这是我的组件:
class PeopleView extends Component {
static propTypes = {
people: PropTypes.array,
view: PropTypes.string
}
static stateToProps = state => ({
people: state.properties.items || [],
sortedPeople: sortBy(state.people.items || [], 'birthday'),
})
constructor(props) {
super(props);
const { people } = props;
const sortedPeople = sortBy(people, 'birthday');
this.state = {
people: people,
sortedPeople: sortedPeople,
collapsed: true
};
}
toggleCollapsed = (e) => {
this.setState({collapsed: !this.state.collapsed});
}
deleteHandler = (id) => {
console.log("Person Id", id)
}
render() {
// THIS IS EMPTY: this.state.people = []
// THIS IS NOT EMPTY: this.props.people = [{...}, {...}, {...}, ...]
const sortedPeople = sortBy(this.props.people, 'createdAt');
const sortedPeopleElements = this.props.sortedPeople.map((p, i) => {
return <li key={p.id}>
<Person index={i} id={p.id} name={p.name} onDelete={this.deleteHandler} />
</li>
});
return (
<div>
<ul>
{sortedPeopleElements}
</ul>
</div>
);
}
}
export default connect(PeopleView);
在 render 方法中 state 中的 people lis 始终为空,但 props 中的 people 列表始终没问题。这是为什么呢?
如何设置状态以使用渲染并开始从此列表中删除人员?
【问题讨论】:
-
connect()中缺少参数 -
@xadm 我得到这个
Uncaught ReferenceError: stateToProps is not defined时将其更改为:connect(stateToProps)(PeopleView); -
因为你必须创建方法
stateToProps。 -
为什么定义为静态?将其移出组件主体
标签: javascript reactjs ecmascript-6 redux react-redux