2 回答
TA贡献1827条经验 获得超8个赞
CLEAR_ARRAY_TODOS不是动作,只是一个保存动作类型字符串的变量。你应该添加一个clearTodos动作
export const clearTodos = { type: CLEAR_ARRAY_TODOS }
或动作创建者
export const clearTodos = () => ({ type: CLEAR_ARRAY_TODOS })
并在您的组件中使用它mapDispatchToProps(就像使用getTodos)
import React, { Component } from 'react';
import { connect } from 'react-redux';
import {getTodos, clearTodos} from '../.././actions';
class Todos extends Component {
componentDidMount() {
this.props.getTodos();
}
render() {
return (
<div>
<button onClick={ this.props.clearTodos }>Clear array Todos</button>
<ul>
{this.props.todos.map(todo => {
return <li key={todo.id}>
{todo.title}
</li>
})}
</ul>
</div>
);
}
}
const mapStateToProps = state => {
console.log(state.todos);
console.log(state.todo);
const { todos } = state;
return {
todos
};
};
const mapDispatchToProps = dispatch => ({
getTodos: () => dispatch(getTodos()),
clearTodos: () => dispatch(clearTodos())
});
export default connect(mapStateToProps, mapDispatchToProps)(Todos);
TA贡献1829条经验 获得超7个赞
只需将 clearTodos 操作添加到 mapDispatchToProps
const mapDispatchToProps = dispatch => ({
getTodos: () => dispatch(getTodos()),
clearTodos: () => dispatch({type: CLEAR_ARRAY_TODOS})
});
然后你只需要在按钮被点击时处理这个动作,所以onClick在那里添加属性:
<button onClick={this.props.clearTodos}>Clear array Todos</button>
添加回答
举报