Полезная нагрузка действия React Usereducer

#reactjs #react-hooks #action #payload

#reactjs #реагирующие хуки #Экшен #полезная нагрузка

Вопрос:

В приведенном ниже коде я не мог понять действие.полезная нагрузка. Пожалуйста, очистите его простым способом.

 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;
 }
}
  

Ответ №1:

Поэтому, когда действие отправляется, оно перехватывается в редукторе. Этот код здесь отправляет действие

 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 в случае переключения, а затем обновляете состояние с помощью возвращаемого объекта из редуктора.

Комментарии:

1. Вы объяснили это очень просто. Любой может понять ваш ответ. Еще раз большое спасибо.

2. Является ли действие защищенным ключевым словом и / или специальным объектом в JS? Кажется неясным из поиска Google / so. Судя по вашему ответу, это не так, и action — это просто какой-то идиоматический синтаксис useReducer, может быть?