我有两个输入字段,允许用户输入任意一个输入来执行米到公里的转换.我试图使用useEffect来观察更改并更新任何一个输入字段,但它不能正常工作.

import React, { useState, useEffect } from "react";
import './App.css';

function App() {
  const [value, setValue] = useState('');
  const [value2, setValue2] = useState('');
  useEffect(() => {
    let res = parseInt(event.target.value) * 1000;
    setValue2(res.toString());
  }, [value])
  useEffect(() => {
    let res = parseInt(event.target.value) / 1000;
    setValue(res.toString());
  }, [value2])
  const onChange = (event) => {
    setValue(event.target.value);
  };
  const onChange2 = (event) => {
    setValue2(event.target.value);
  };
  return (
    <>
      <div>Meters</div>
      <input value={value} onChange={onChange} />
      <div>Kilometers</div>
      <input value={value2} onChange={onChange2} />
    </>
  );
}

export default App;

推荐答案

你不需要useEffect英镑就能实现你想要的:

import React, { useState } from "react";

function App() {
  const [value, setValue] = useState(null);
  const [value2, setValue2] = useState(null);

  const onChange = (event) => {
    setValue(event.target.value);
    setValue2(event.target.value / 1000);
  };
  const onChange2 = (event) => {
    setValue2(event.target.value);
    setValue(event.target.value * 1000);

  };

  return (
    <>
      <div>Meters</div>
      <input value={value} onChange={onChange} />
      <div>Kilometers</div>
      <input value={value2} onChange={onChange2} />
    </>
  );
}

export default App;

Sandbox 示例here

Reactjs相关问答推荐

sourceBuffer. appendBuffer成功,但h5视频播放器卡住了

在带有和设计的表格中禁用和取消选中复选框

react 派生状态未正确更新

使用下一步中的路由/导航不会立即加载路由

TanStack/Reaction-Query在我的Vercel应用程序中不起作用

如何从react 18-nextjs 14应用程序路由中的客户端组件呈现服务器组件?

使用自动播放的视频组件呈现登录页面时出现JEST测试错误

使用experial_useFormState将参数传递给服务器操作

无法使axiosmockadapter正常工作

如何在 React 过滤器中包含价格过滤器逻辑?

如何在使用 React Router v6 将当前页面的状态传递给上一页的同时导航到上一页?

在 React JS 中编辑表格数据

调用 Statsig.updateUser 时 UI 不呈现

react-markdown 不渲染 Markdown

React Router 6.4CreateBrowserRouter子元素不显示

调用 Jest 和服务方法的问题

将 Material UI 菜单渲染为

在表格中显示具有自定义声明的用户状态

React Hooks 表单在日志(log)中显示未定义的用户名

当上下文中的状态发生变化时,组件不会立即重新渲染