当前位置:首页 > React

react组件实现失去焦点

2026-01-27 17:30:20React

实现 React 组件失去焦点的方法

使用 onBlur 事件
在输入元素上绑定 onBlur 事件,当元素失去焦点时触发回调函数。这是最直接的方式:

<input 
  onBlur={(e) => console.log('失去焦点', e.target.value)} 
/>

结合 useState 管理状态
通过状态存储输入值,在失去焦点时处理数据:

react组件实现失去焦点

const [inputValue, setInputValue] = useState('');
const handleBlur = () => {
  console.log('最终值:', inputValue);
};

return (
  <input 
    value={inputValue}
    onChange={(e) => setInputValue(e.target.value)}
    onBlur={handleBlur}
  />
);

自定义 Hook 封装逻辑
可复用逻辑抽离为自定义 Hook:

react组件实现失去焦点

function useBlurHandler(initialValue, callback) {
  const [value, setValue] = useState(initialValue);
  const handleBlur = () => callback(value);

  return {
    value,
    onChange: (e) => setValue(e.target.value),
    onBlur: handleBlur
  };
}

// 使用示例
const inputProps = useBlurHandler('', (val) => console.log(val));
return <input {...inputProps} />;

处理动态生成的元素
对于动态渲染的组件,可通过 useRef 绑定事件:

const inputRef = useRef();
useEffect(() => {
  const current = inputRef.current;
  current.addEventListener('blur', () => console.log('blur'));
  return () => current.removeEventListener('blur');
}, []);

return <input ref={inputRef} />;

表单整体失去焦点验证
在表单提交时检查所有字段的失焦状态:

const formRef = useRef();
const handleSubmit = () => {
  const inputs = formRef.current.querySelectorAll('input');
  inputs.forEach(input => input.blur()); // 强制失焦触发验证
};

注意事项

  • 移动端需测试 onBluronTouchEnd 的兼容性
  • 避免在 onBlur 中同步触发会重新聚焦的操作(如弹出模态框)
  • 复杂场景可考虑使用 Formik 或 React Hook Form 库的失焦验证机制

标签: 组件焦点
分享给朋友:

相关文章

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过d…

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 comp…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class…

vue实现广告组件

vue实现广告组件

vue实现广告组件的方法 使用动态组件实现 在Vue中可以通过动态组件的方式加载广告组件,根据不同的条件展示不同的广告内容。动态组件使用<component :is="currentCompon…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或回…