Skip to content

bind

bind可以快速将input控件与状态数据进行快速的双向绑定。

  • bind(<状态路径>)返回inputonChange方法,将之直接{...bind("")}解构到input元素上即可。

  • bind参数可以是任意深度的路径,如bind("user.name")

  • bind事实上仅仅是返回一个onChange而已,其功能代码非常简单,如下:

    ts
        function bind(){ 
          const args = arguments    
          const selector = args.length>=1 && typeof(args[0])==='string' ? args[0]: undefined
          if(!selector){
              throw new Error("Input bind must have at least one argument")
          }
          const bindings:InputBindings = { }
          bindings['onChange'] = (e:any)=>{
              const value = getInputValueFromEvent(e)    
              setVal(store.state,selector.split(PATH_DELIMITER),value)
          }   
          return bindings
      })
    • getInputValueFromEvent用于从inputonChange事件中获取value值。
    • setVal用于将value写入到状态中。