代码之家  ›  专栏  ›  技术社区  ›  Adam

原因反应如何更好地处理事件?

  •  0
  • Adam  · 技术社区  · 6 年前

    我设法让事件更新,利用网络的片段,我真的很难理解。以下是整个片段:

    type state = {
        login: string,
        password: string
    };
    
    type action =
        | SetLogin(string)
        | SetPassword(string);
    
    
    let component = ReasonReact.reducerComponent("Login");
    
    let make = (_children) => {
        ...component,
        initialState: ()=> { login: "", password: "" },
    
        reducer: (action, state) =>
            switch (action) {
                | SetLogin (data) => ReasonReact.Update({...state, login: data })
                | SetPassword (data) => ReasonReact.Update({...state, password: data })
            },
    
        render: self =>
            <div>
                (ReasonReact.string("login"))
                <input
                    value=self.state.login
                    onChange={ev => self.send(SetLogin(ReactDOMRe.domElementToObj(ReactEventRe.Form.target(ev))##value))}
                />
                (ReasonReact.string("password"))
                <input
                    value=self.state.password
                    _type="password"
                    onChange={ev => self.send(SetPassword(ReactDOMRe.domElementToObj(ReactEventRe.Form.target(ev))##value))}
                />
    
            </div>
    };
    

    我特别关注onchange系列:

    onChange={ev => self.send(SetLogin(ReactDOMRe.domElementToObj(ReactEventRe.Form.target(ev))##value))}

    有没有更好的方法?这似乎很复杂。

    1 回复  |  直到 6 年前
        1
  •  2
  •   knowbody Skulas    6 年前

    let getValueFromEvent = event : string => (
                                                event
                                                |> ReactEventRe.Form.target
                                                |> ReactDOMRe.domElementToObj
                                              )##value;
    

    <input
      value=self.state.password
      _type="password"
      onChange={event => self.send(SetPassword(getValueFromEvent(event)))}
    />
    
    推荐文章