Reactjs 我对React中的状态值有疑问(请帮助我……)

Reactjs 我对React中的状态值有疑问(请帮助我……),reactjs,Reactjs,如果数组是这样的,并且您希望通过访问memolist的第一个数组来获取标题。state.memolist[1]。title我可以这样访问它吗?我不知道该怎么办 问题3。 整个initialState值中的哪一个​​useSelector是否收到TODO?如何获得备忘录列表 如果您能告诉我一件事,我将非常感激……您的示例不仅仅是使用React本身。它还使用Redux来维护和改变应用程序的全局状态 方法todos()接受一个状态(默认值为initialState)和一个操作,并基于该操作返回一个变化

如果数组是这样的,并且您希望通过访问memolist的第一个数组来获取标题。state.memolist[1]。title我可以这样访问它吗?我不知道该怎么办

问题3。 整个initialState值中的哪一个​​useSelector是否收到TODO?如何获得备忘录列表


如果您能告诉我一件事,我将非常感激……

您的示例不仅仅是使用React本身。它还使用Redux来维护和改变应用程序的全局状态

方法todos()接受一个状态(默认值为initialState)和一个操作,并基于该操作返回一个变化的状态

例如,如果操作的类型为ADD_TODO,则它将返回状态并添加一个附加项

TodosContainer正在使用“useSelector”从Redux存储中提取其值

在这种情况下,国家到底意味着什么?这是全部吗?我想通过add_MEMO type向备忘录列表添加一个数组,但它不能正常运行。有什么问题

  • 对于每个减速器,它都需要一个初始状态。通过添加备忘录等操作,您可以更新备忘录列表等状态。通过以下步骤可以更好地理解redux流程

  • 如果要更新数组,必须以不变的方式进行。它不会像concat()一样工作<代码>状态:state.memolist.concat(action.todo)

如果数组是这样的,并且您希望通过访问memolist的第一个数组来获取标题。state.memolist.title我可以这样访问它吗?我不知道该怎么办。 从0开始索引。因此它将是
备忘录列表[0]。标题

整个initialState值中的哪一个​​useSelector是否收到TODO?如何获得备忘录列表

  • useSelector接受一个函数,我们称之为选择器函数。选择器是一个函数,它将整个Redux存储状态作为参数,从状态中读取一些值,然后返回结果

  • 运行下一行后,尝试打印状态值。就像从所有的东西中,你会选择你的东西


const todos=useSelector(state=>state.memolist)

我在第一个问题中提到的状态是指函数“todos”中的状态
//todos.js
const ADD_TODO='todos/ADD_TODO';
const TOGGLE_TODO='todos/TOGGLE_TODO';

let nextId=1;
export const addTodo=(title,text)=>({
    type:ADD_TODO,
    todo:{
        id:nextId++,
        title,
        text
    }
});
export const toggleTodo=id=>({
    type:TOGGLE_TODO,
    id
});

const initialState={
    current_memo:0,
    memolist:[
        {
            id:1,
            title:'i am',
            text:'so tired'
        },
    ]
};

export default function todos(state=initialState, action){
    switch(action.type){
        case ADD_TODO:
            return{
                ...state,
                state: state.memolist.concat(action.todo), //Question 1.
                current_memo: action.todo.id
            } 
        
        case TOGGLE_TODO:
            return state.current_memo;
        default:
            return state;
    }
}


//TodosContainer.js
function TodosContainer(){
    const todos=useSelector(state=>state.todos);  //Question 3.
    const dispatch=useDispatch();
    
    const onCreate=useCallback((title,text)=>dispatch(addTodo(title,text)),[dispatch]);
    const onToggle=useCallback(id =>dispatch(toggleTodo(id)),[dispatch]);

    return <Todos
        todos={todos}
        onCreate={onCreate}
        onToggle={onToggle}
    />;
}

export default TodosContainer;
current_memo:0,
    memolist:[
        {
            id:1,
            title:'i am',
            text:'is tired'
        },
        {
            id:2,
            title:'who am i',
            text:'where is it'
        },
    ]
case ADD_TODO:
            return{
                ...state,
                memolist: [ ... state.memolist , 
                            {
                              id: action.todo.id,
                              text: action.todo.text,
                              completed: true
                            }
                          ]
                current_memo: action.todo.id
            }