在下面的代码中,我无法理解action.payload。请以简单的方式清除它。
import React, {useContext} from 'react'
import NotesContext from '../context'
function Note({ note }) {
const {dispatch} = useContext(NotesContext)
return (
<div className="note">
<p>{note.text}</p>
<div className="btn-container">
<button onClick={() => dispatch({type: 'SET_CURRENT_NOTE', payload:note})} className="edit">Edit</button>
<button onClick={() => dispatch({type: 'DELETE_NOTE', payload:note.id})} className="delete">Delete</button>
</div>
</div>
)
}
export default Note
export default function reducer(state, action) {
switch(action.type) {
case 'SET_CURRENT_NOTE':
return {
...state,
currentNote: action.payload
}
case 'DELETE_NOTE':
const deleteNotes = state.notes.filter(
note => note.id !== action.payload
)
return {
...state,
notes: deleteNotes
}
default:
return state;
}
}
答案 0 :(得分:0)
因此,当分派动作时,它会陷入减速器中。这段代码正在调度动作
dispatch({type: 'SET_CURRENT_NOTE', payload:note})
可以这样写:
const action = {type: "SET_CURRENT_NOTE", payload: note}
dispatch(action)
现在在化简器中,您可以访问传递到dispatch
的操作对象。
您可以从该对象通过点符号访问属性type
和payload
,如下所示:
action.type
action.payload
然后,您只需在切换的情况下捕获匹配的action.type
,然后使用化简器中返回的对象来更新状态。