当前位置: 首页 > 知识库问答 >
问题:

使用钩子反应输入chnage默认值

施彬彬
2023-03-14
const [firstName, setFirstName] = useState(null)

useEffect(() => {
    if (props.profile && props.profile.profile) {
        setFirstName(props.profile.first_name)
    }
})


return (
    <div>
        <CustomTextField
                    className={classes.InputField}
                    variant="outlined"
                    name="firstname"
                    type="text"
                    fullWidth
                    placeholder=""
                    onChange={e => setFirstName(e.target.value)}
                    value={firstName}
                />
    </div>
)

这里我使用的是react hooks状态

在这里,我试图改变来自API的默认值。但是,我不能在改变方法上改变。

谢谢

共有1个答案

云何平
2023-03-14

您不需要使用onchangeuseEffect来设置默认值,只需使用CustomTextFieldusestast中给出的道具来设置:

import { Input } from "@material-ui/core";
import "./styles.css";
import * as React from "react";

export function CustomTextField(props) {
  const [firstName, setFirstName] = React.useState(props.firstName);
  return (
    <Input
      onChange={(e) => {
        setFirstName(e.target.value);
      }}
      variant="outlined"
      name="firstname"
      type="text"
      value={firstName}
    />
  );
}

export default function App() {
  return <CustomTextField firstName="Kiran" />;
}
 类似资料:
  • 问题内容: 我是React和REDUX的新手,我只是开发了一个简单的react应用程序,现在我遇到了一个问题,当我在组件中渲染输入元素时,如果我将元素设置为“值”,它将变为只读,但是如果我将其设置为重新设置状态时,“ defaultValue”上的值将永远不会再更新。 这是我的代码: 然后我发现是否通过添加输入元素而对此做出错误 ,它可以正常工作(它在props或state更新时更新,并且我可以重

  • 我通常使用getBoundingClientRect()。宽度当开发一个Swiper组件使用反应挂钩,但在一些例子getBoundingClientRect()。宽度返回0。 我在useEffect函数中使用了setTimeout,效果很好; 下面是简单的swiper代码演示: 简单swiper演示代码

  • 我发现有几种方法可以用钩子处理用户的文本输入。用钩子处理输入的更好或更合适的方法是什么?你会用哪一种? 1)处理输入的最简单的钩子,但是你有更多的字段,你必须写更多重复的代码。 活动: 2) 与上面的示例类似,但具有动态键名 活动: 3) 作为的替代方案,正如ReactJS文档中所述,通常比更可取。 活动: 4) 将返回一个回调的备忘录版本,该版本仅在其中一个依赖项发生更改时才会更改。 活动:

  • 我有问题与使用useReucer与输入。我试图在这里使用受控输入,但我一直收到错误;受控输入是不受控制的 从“React”导入React,{useReducer,useffect}; 从“axios”导入axios; 常量初始状态={ }const reducer=(状态、操作)= }Const ReucerFetchdata = () = } 导出默认值

  • CodeSandBox:https://codesandbox.io/embed/react-table-editable-content-ggvcy 当试图处理React表中的输入时,我的输入失去焦点,因此一次只能键入1个字符。 如何修复我的渲染周期,以允许输入? 编辑:我不小心用工作版本的代码更新了沙盒,尽管它还有另一个bug:如何在刷新更新期间捕获由于焦点模糊更改而导致的react事件?

  • 查看图像以供参考。 我是Java的初学者。