Reactjs React和Redux:将有效负载传递给另一个操作类型
我想将DELETE_ITEM动作类型附带的负载传递给DELETE_ITEM_SUCCESS动作类型,这样我就可以使用该负载并对其进行处理,正如您在下面的中间件代码中看到的那样。默认情况下,删除项目成功不附带有效负载。这只是一条消息,你可以在下面的我的操作文件中看到 //动作文件Reactjs React和Redux:将有效负载传递给另一个操作类型,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我想将DELETE_ITEM动作类型附带的负载传递给DELETE_ITEM_SUCCESS动作类型,这样我就可以使用该负载并对其进行处理,正如您在下面的中间件代码中看到的那样。默认情况下,删除项目成功不附带有效负载。这只是一条消息,你可以在下面的我的操作文件中看到 //动作文件 export const GET_ITEMS = 'GET ITEMS'; export const FETCH_ITEMS_SUCCESS = 'FETCH ITEMS SUCCESS'; expo
export const GET_ITEMS = 'GET ITEMS';
export const FETCH_ITEMS_SUCCESS = 'FETCH ITEMS SUCCESS';
export const FETCH_ITEMS_ERROR = 'FETCH ITEMS ERROR';
export const DELETE_ITEM = 'DELETE_ITEM';
export const DELETE_ITEM_SUCCESS = 'DELETE ITEM SUCCESS';
export const DELETE_ITEM_ERROR = 'DELETE ITEM ERROR';
export const getItems = () => ({
type: GET_ITEMS
});
export const updateItems = (data) => ({
type : UPDATE_ITEMS,
payload: data
});
export const deleteItem = (itemId) => ({
type : DELETE_ITEM,
payload: itemId
});
//App.js
class App extends Component {
componentDidMount() {
this.props.getItems()
}
static propTypes = {
getItems: PropTypes.func.isRequired,
deleteItem: PropTypes.func.isRequired
}
handleDelete = (id) =>{
this.props.deleteItem(id)
}
render() {
const { itemsList} = this.props.items
return (
<div className="container app-wrapper">
<header>
{itemsList.map(item => (<h1 key={item.id}>{item.title} <button onClick={this.handleDelete.bind(this, item.id)}>delete</button></h1>))}
</header>
</div>
);
}
}
const mapStateToProps = state => ({
items: state.items
});
export default connect(mapStateToProps, {getItems, deleteItem})(App);
什么是APIDeteRequest?导出常量APIDeteRequest=(url,onSuccess,onError)=>({type:DELETE_-API_-REQUEST,meta:{url,onSuccess,onError}});
DELETE\u ITEM\u SUCCESS
是否在您预期的情况下正确触发,而没有所需的有效负载?或者它根本就没有发射?是的,它成功发射了。我只想获取来自DELETE_ITEM的有效负载,并在触发时将其与DELETE_ITEM_SUCCESS一起使用。
export const removeItemFlow = ({dispatch, getState}) => next => action => {
next(action);
if(action.type === DELETE_ITEM){
dispatch(apiDeleteRequest(`https://jsonplaceholder.typicode.com/todos/${action.payload}`,
DELETE_ITEM_SUCCESS, DELETE_ITEM_ERROR));
return next(action)
}
if(action.type === DELETE_ITEM_SUCCESS){
const updateState = getState().items.itemsList.filter(item => item.id !== action.payload)
dispatch(updateItems(updateState))
}
};