React State 快照(v2)

2024-04-27  本文已影响0人  玫瑰的lover

Tips

为什么说state是一个快照
state 什么时候以及为什么会更新?更新机制是什么?
事件处理函数如何接入一个快照

Keywords

请求渲染

Center Paragraph

触发渲染事件

Remember

Additional

no magic, just array!考虑两件事情:第一件是: 如何处理组件多次使用useState;另外一件是,如何处理后续setState

const state=[]
const setter = []
let cursor = 0; // 处理一个函数中多次调用useState
let firstRun = true// 针对同一个state,是否是首次执行setState
function createSetter(cursor){
    return function setterWithCursor(newVal){
        state[cursor] = newVal
    }
}
const function useState(initial){
    if(firstRun){
        state.push(initial)
        setters.push(createSetter(cursor))
        firstRun=false
    }
    const setter = setters[cursor]
    const value = state[cursor]
    cursor++
    return [value,setter]
}
上一篇 下一篇

猜你喜欢

热点阅读