关于 React 中使用 input,输入之后失焦问题解决方案

1.出现问题代码(demo)

import React, { useState } from "react";

const All = ()=>{

    const [aValue, setAValue] = useState('')

    const A = ()=>{
        return (
            <div>
                <input
                    value={aValue}
                    onInput={(e)=>{
                       e.persist()
                       setAValue(e.target.value)
                    }}
                />
            </div>
        )
    }

    return (
        <div>
            <A />
        </div>
    )
}

export default All;

2.解决方案

import React, { useState } from "react";

const All = ()=>{

    const [aValue, setAValue] = useState('')

    const a = ()=>{
        return (
            <div>
                <input
                    value={aValue}
                    onInput={(e)=>{
                       e.persist()
                       setAValue(e.target.value)
                    }}
                />
            </div>
        )
    }

    return (
        <div>
            {
               a()
            }
        </div>
    )
}

export default All;

3.解决说明

因为我以前是用 VUE 开发的,React 还不是很熟,看一些大佬说,出现这个问题是 嵌套高级组件,嵌套内组件刷新 React 触发 render 会重新计算组件相关的 key,导致前后两者不一致,我的修改从标签引用变成函数式引用,可能是让 React 计算高级组件的嵌套变成了,高级组件内部逻辑的判断,不过这些都还只是我的猜测,后续有时间会去看一下源码,给出答案


版权声明:本文为vileman原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。