【问题标题】:react input chnage default value using hooks使用钩子响应输入更改默认值
【发布时间】:2021-08-07 05:15:50
【问题描述】:
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 的默认值。但是,我无法更改 onChange 方法。

请看看我该如何处理。

或任何其他方式来处理这个问题

谢谢

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    您不需要使用onChangeuseEffect 来设置默认值,只需使用CustomTextFielduseState 中给出的道具设置value

    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" />;
    }
    

    【讨论】:

    • value 和 defaultValue 都会在输入中出现?
    • 你在使用material-ui吗?
    • 好的,我会在 2 分钟内为您完成。让我分享一个codeandbox中的例子。
    • @MajidMohammadi defaultValue 用于不受控制的组件。在您的沙箱中将 defaultValue={firstName} 更改为 value={firstName} 并注意它确实发生了变化。欲了解更多信息,请参阅此处:stackoverflow.com/questions/56000466/…
    • @MajidMohammadi 很高兴为您提供帮助
    猜你喜欢
    • 2015-11-26
    • 2014-06-03
    • 2018-07-26
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多