代码之家  ›  专栏  ›  技术社区  ›  Piotr Å»ak

Redux表单->自动对焦首次输入

  •  1
  • Piotr Å»ak  · 技术社区  · 7 年前

    我有Redux格式的组件,我需要自动对焦

    现在它不起作用了。每次自动对焦第一次输入时,我应该做什么?

    const renderField = ({ input, label, type, meta: { touched, error, warning } }) => (
      <div>
        <div className ="group">
          <input className="text"
          {...input}
          type={type}/>
          <label>{label}</label>
          <span className="highlight"></span>
          <span className="bar"></span>
          {touched && ((error && <span>{error}</span>) || (warning && <span>{warning}</span>))}
        </div>
      </div>
    )
    
    
      <Field name="name"
        type="text"
        component={renderField}
        label="Username"
        autoFocus
        require/>
    
      <Field name="email"
       type="email"
        component={renderField}
         label="Email"
        require/>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Noitidart    7 年前

    autoFocus 不会放入 input 组我们需要手动处理此问题。

    唯一能进入的钥匙 输入 是:

    export type InputProps = {
      checked?: boolean,
      name: string,
      onBlur: { (eventOrValue: Event | any): void },
      onChange: { (eventOrValue: Event | any): void },
      onDrop: { (event: Event): void },
      onDragStart: { (event: Event): void },
      onFocus: { (event: Event): void },
      value: any
    }
    

    如源代码所示- https://github.com/erikras/redux-form/blob/master/src/FieldProps.types.js.flow#L29-L38

    也可以在文档中看到- https://redux-form.com/7.3.0/docs/api/field.md/#input-props

    所以我们要修改 renderField 处理所有其他道具并将其传递给 输入 像这样:

    const renderField = ({ input, label, meta: { touched, error, warning }, custom, ...inputProps }) => (
      <div>
        <div className ="group">
          <input className="text" {...input} {...inputProps} />
          <label>{label}</label>
          <span className="highlight"></span>
          <span className="bar"></span>
          {touched && ((error && <span>{error}</span>) || (warning && <span>{warning}</span>))}
        </div>
      </div>
    )
    

    注意变化,现在是 <input className="text" {...input} {...inputProps} />

    我补充道 custom 以使其被删除,因为这是 FieldProps - https://github.com/erikras/redux-form/blob/master/src/FieldProps.types.js.flow#L40-L63

    推荐文章