我收集了用于在CSS中转换单位的代码,当用户更改输入中的值时,输入也会更改.下面的代码是如何工作的?在函数NumberInput中,我哪里出错了,请告诉我!我是一个react 的新手:D

codesandbox上执行的代码.

import React from 'react'
import { ListType } from './types'

export default function CssUnits() {
  const [em, setEm] = React.useState<number>(1)
  ...

  const emHandler = (val: number) => {
    setRem(val)
    setPx(val * 16)
    setPercent(val * 100)
    setPt(val * 12)
  }
  ...

  const List: ListType[] = [
    {
      label: 'EM',
      description: 'Relative to the font-size of the element',
      state: em,
      onChange: (val) => {
        emHandler(val || 0)
      },
    },
    ...
  ]

  function NumberInput({ key, value, variant, label, description, onChange, precision }) {
    return (
        <div key={key} className="my-8">
            <div className="text-xl font-medium">{label} <span className="text-sm text-gray-400">({description})</span></div>
            <input type='text' value={value} onChange={onChange}/>
        </div>
    );
  }
  
  return (
    <div className="my-4">
      <h2>CSS Units converter</h2>
        {List.map((item, index) => {
          const decimalPoint = item.state.toString().split('.')
          return (
            <NumberInput
              key={index}
              value={item.state}
              variant='default'
              label={item.label}
              description={item.description}
              onChange={item.onChange}
              precision={decimalPoint[1] ? decimalPoint[1].length : 0}
            />
          )
        })}
    </div>
  )
}

推荐答案

NumberInput中的onChange函数将event传递到item.onChange.因此,您需要更改代码的这一部分:

 onChange={item.onChange}

收件人:

onChange={(e) => item.onChange(e.target.value)}

用于传递正确的值!

此外,在每个处理程序中,您应该设置当前处理程序值,以同时查看当前输入值的变化.

您可以参考这codesandbox:

Edit pensive-shape-rpdxwq

Reactjs相关问答推荐

以下代码是否存在安全问题?

为什么登录错误和密码在创建Reaction-Hook-Form后立即被删除?

React useEffect 问题...异步函数内的变量正在获取延迟的更新值

Javascript - 正则表达式不适用于 MAC OS - 编码?

react 本机屏幕转换

从 redux 调用UPDATE_DATA操作时状态变得未定义

获取更多数据后更新 DOM,而不刷新 React.js 中的页面

无法读取未定义的属性(阅读 'editQuoteModalShown')reactredux

无法从子组件传递数据到父组件

根据其中的值不同地react setState 更新状态

我正在通过 API(有效)从 MongoDB 传递数据.可视化但我不断收到此 TypeError: Cannot convert undefined or null to object

响应式媒体 React Tailwind

使用 react-router-dom 时弹出空白页面

模块解析失败:意外令牌 (257:106) 您可能需要适当的加载程序来处理此文件类型

Cypress - 在继续之前等待下一个按钮重新出现

react-admin useGetIdentity 只返回全名,id 未定义 头像未定义

如何不旋转 mui 自动完成弹出图标?

在react 钩子中将数组添加到数组状态给出一个数字

ReactJS:按钮启用禁用更改 colored颜色

如何将本地视频文件上传到 Google Cloud