Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Ref未获取表单中的文本输入字段数据_Javascript_Reactjs_React Redux - Fatal编程技术网

Javascript React Ref未获取表单中的文本输入字段数据

Javascript React Ref未获取表单中的文本输入字段数据,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我在自定义输入字段中使用react Ref,但它没有获取输入内容 我正在React类组件中创建一些ref,并在表单自定义输入字段ref中使用它们。然后我有一个表单中的按钮,它有“onClick”事件来获取数据。当我得到“ref.current.value”时,我总是在控制台中未定义 class-LandingAfterSignIn扩展了React.Component{ titleTextFieldRef=React.createRef(); shortDescriptionMetaTextFie

我在自定义输入字段中使用react Ref,但它没有获取输入内容

我正在React类组件中创建一些ref,并在表单自定义输入字段ref中使用它们。然后我有一个表单中的按钮,它有“onClick”事件来获取数据。当我得到“ref.current.value”时,我总是在控制台中未定义

class-LandingAfterSignIn扩展了React.Component{
titleTextFieldRef=React.createRef();
shortDescriptionMetaTextFieldRef=React.createRef();
longDescriptionMetaTextFieldRef=React.createRef();
imageFieldRef=反应。
createRef();
webFieldRef=React.createRef();
contactTextFieldRef=React.createRef();
建造师(道具){
超级(道具);
//我们使用它使卡片在页面呈现后显示
此.state={
卡片动画:“卡片隐藏”,
孤岛加载:false,
错误:null
};
//超级(道具);
此.state={
错误:[]
};
}
render(){
let image=require(“资产/img/landing bg.jpg”);
const{classes,…rest}=this.props;
//设titleTextFieldRef=this.titleTextFieldRef;
//让shortDescriptionMetaTextFieldRef=this.shortDescriptionMetaTextFieldRef;
返回(
欢迎{firebase.auth().currentUser.displayName}
{({runMutation})=>(
{
控制台日志(“提交”);
ev.preventDefault();
ev.stopPropagation();
ev.nativeEvent.stopImmediatePropagation();
const titleTextField=get(
此.titleTextFieldRef,
“当前值”,
""
);
const shortDescriptionMetaTextField=get(
此.shortDescriptionMetaTextFieldRef,
“当前值”,
""
);
const longDescriptionkMetaTextField=get(
此.longDescriptionMetaTextFieldRef,
“当前值”,
""
);
const contactTextField=get(
这是contactTextFieldRef,
“当前值”,
""
);
console.log(this.titleTextFieldRef);
console.log(this.shortDescriptionMetaTextFieldRef);
等待突变({
titleTextField:titleTextField,
shortDescriptionMetaTextField:shortDescriptionMetaTextField,
创建位置:firebase.database.ServerValue.TIMESTAMP,
更新地址:firebase.database.ServerValue.TIMESTAMP
});
设置(this.titleTextFieldRef,“current.value”和“”);
set(this.shortDescriptionMetaTextFieldRef,“current.value”,“当前值”);
}}
>
+
)}
class LandingAfterSignIn extends React.Component {

    titleTextFieldRef = React.createRef();
    shortDescriptionMetaTextFieldRef = React.createRef();
    longDescriptionMetaTextFieldRef = React.createRef();
    imageFieldRef = React.

createRef();
    webFieldRef = React.createRef();
    contactTextFieldRef = React.createRef();

constructor(props) {
    super(props);
    // we use this to make the card to appear after the page has been rendered
    this.state = {
        cardAnimaton: "cardHidden",
        isLoading: false,
        error: null
    };

   // super(props);




    this.state = {
        errors: []
    };

}



render() {
    let image= require("assets/img/landing-bg.jpg") ;
    const { classes, ...rest } = this.props;

    //let titleTextFieldRef= this.titleTextFieldRef  ;
    //let  shortDescriptionMetaTextFieldRef  = this.shortDescriptionMetaTextFieldRef ;

    return (
        <div
            className={classes.pageHeader}
            style={{
                backgroundImage: "url(" + image + ")",
                backgroundSize: "cover",
                backgroundPosition: "top center",
                width: "100%"
            }}
        >
            <Header
                color="transparent"
                routes={dashboardRoutes}
                brand="StockNap"
                rightLinks={<HeaderLinks />}
                fixed
                changeColorOnScroll={{
                    height: 400,
                    color: "white"
                }}
                {...rest}
            />
            <div>
                <div className={classes.container}>

                    <div className={classes.container}>
                        <GridContainer>
                            <GridItem xs={12} sm={12} md={6}>

                                <h1 className={classes.title}>Welcome {firebase.auth().currentUser.displayName} </h1>
                                <FirebaseDatabaseMutation type="push" path="user_bookmarks">
                                    {({ runMutation }) => (
                                        <form>


                                            <GridContainer>
                                                    <GridItem xs={12} sm={12} md={6}>
                                                        <CustomInput
                                                            labelText="Company Name/Title"
                                                            id="titleTextField"
                                                            formControlProps={{
                                                                fullWidth: true
                                                            }}
                                                            inputRef={this.titleTextFieldRef}
                                                            >
                                                        </CustomInput>
                                                    </GridItem>
                                                    <GridItem xs={12} sm={12} md={6}>
                                                        <CustomInput
                                                            labelText="short Description"
                                                            id="shortDescription"
                                                            formControlProps={{
                                                                fullWidth: true,
                                                                className: classes.textArea
                                                            }}
                                                            inputRef={this.shortDescriptionMetaTextFieldRef}
                                                        />
                                                    </GridItem>
                                                    <GridItem xs={12} sm={12} md={6}>
                                                        <CustomInput
                                                            labelText="long Description"
                                                            id="longDescription"
                                                            formControlProps={{
                                                                fullWidth: true,
                                                                className: classes.textArea
                                                            }}
                                                            inputProps={{
                                                                multiline: true,
                                                                rows: 2
                                                            }}
                                                            inputRef={this.longDescriptionMetaTextFieldRef}
                                                        />
                                                    </GridItem>
                                                <GridItem xs={12} sm={12} md={6}>
                                                    <CustomInput
                                                        labelText="contact"
                                                        id="contactTextField"
                                                        formControlProps={{
                                                            fullWidth: true,

                                                        }}

                                                        inputRef={this.contactTextFieldRef}
                                                    />
                                                </GridItem>

                                                    <Button
                                                        style={{
                                                            width: 50,
                                                            height: 50,
                                                            alignSelf: "center",
                                                            background: "#039BE5",
                                                            color: "white"
                                                        }}
                                                        variant="fab"
                                                        type="submit"
                                                        onClick={async ev => {
                                                            console.log("submit") ;
                                                            ev.preventDefault();
                                                            ev.stopPropagation();
                                                            ev.nativeEvent.stopImmediatePropagation();


                                                            const titleTextField = get(
                                                                this.titleTextFieldRef,
                                                                "current.value",
                                                                ""
                                                            );
                                                            const shortDescriptionMetaTextField = get(
                                                                this.shortDescriptionMetaTextFieldRef,
                                                                "current.value",
                                                                ""
                                                            );
                                                            const longDescriptionkMetaTextField = get(
                                                                this.longDescriptionMetaTextFieldRef,
                                                                "current.value",
                                                                ""
                                                            );
                                                            const contactTextField = get(
                                                                this.contactTextFieldRef,
                                                                "current.value",
                                                                ""
                                                            );

                                                            console.log(this.titleTextFieldRef);
                                                            console.log(this.shortDescriptionMetaTextFieldRef);

                                                            await runMutation({
                                                                titleTextField: titleTextField,
                                                                shortDescriptionMetaTextField: shortDescriptionMetaTextField,
                                                                created_at: firebase.database.ServerValue.TIMESTAMP,
                                                                updated_at: firebase.database.ServerValue.TIMESTAMP
                                                            });


                                                            set(this.titleTextFieldRef, "current.value", "");
                                                           set(this.shortDescriptionMetaTextFieldRef, "current.value", "");
                                                        }}
                                                    >
                                                        +
                                                    </Button>

                                                </GridContainer>

                                        </form>
                                    )}
                                </FirebaseDatabaseMutation>

                            </GridItem>
                        </GridContainer>
                    </div>
                </div>
            </div>
            <div className={classNames(classes.main, classes.mainRaised)}>
                <div className={classes.container}>

                </div>
            </div>
            <br/>
            <Footer />
        </div>
    );
}
function CustomInput({ ...props }) {
  const {
    classes,
    formControlProps,
    labelText,
    id,
    labelProps,
    inputProps,
    error,
    white,
    inputRootCustomClasses,
    success
  } = props;

  const labelClasses = classNames({
    [" " + classes.labelRootError]: error,
    [" " + classes.labelRootSuccess]: success && !error
  });
  const underlineClasses = classNames({
    [classes.underlineError]: error,
    [classes.underlineSuccess]: success && !error,
    [classes.underline]: true,
    [classes.whiteUnderline]: white
  });
  const marginTop = classNames({
    [inputRootCustomClasses]: inputRootCustomClasses !== undefined
  });
  const inputClasses = classNames({
    [classes.input]: true,
    [classes.whiteInput]: white
  });
  var formControlClasses;
  if (formControlProps !== undefined) {
    formControlClasses = classNames(
      formControlProps.className,
      classes.formControl
    );
  } else {
    formControlClasses = classes.formControl;
  }
  return (
    <FormControl {...formControlProps} className={formControlClasses}>
      {labelText !== undefined ? (
        <InputLabel
          className={classes.labelRoot + " " + labelClasses}
          htmlFor={id}
          {...labelProps}
        >
          {labelText}
        </InputLabel>
      ) : null}
      <Input
        classes={{
          input: inputClasses,
          root: marginTop,
          disabled: classes.disabled,
          underline: underlineClasses
        }}
        id={id}
        {...inputProps}
      />
    </FormControl>
  );
}