【问题标题】:Nothing is displayed in the multi-form in reactreact中的多表单什么都没有显示
【发布时间】:2020-12-21 22:10:36
【问题描述】:

所以我尝试在 react 中构建一个多步骤表单,我所做的第一个版本是在 React.Component 上的一堆表单和条件测试的完整列表,以知道要显示哪个。我决定删除它并编写一个更好更简洁的代码,但现在什么都没有显示。

这里是处理整个多步骤的主要代码:

import React from 'react';
import {Row, Col} from 'react-bootstrap'
import {ClassCreationFormName} from './ClassCreationFormName'
import ClassCreationFormProfilePic from './ClassCreationFormProfilePic'
import ClassCreationFormEmail from './ClassCreationFormEmail'
import ClassCreationFormClass from './ClassCreationFormClass'
import ClassCreationFormWillLearn from './ClassCreationFormWillLearn'
import ClassCreationFormMaxStudent from './ClassCreationFormMaxStudent'
import ClassCreationFormToBring from './ClassCreationFormToBring'
import ClassCreationFormSchedule from './ClassCreationFormSchedule'
import ClassCreationFormLocation from './ClassCreationFormLocation'
import ClassCreationFormCost from './ClassCreationFormCost'
import ClassCreationFormTags from './ClassCreationFormTags'
import ClassCreationFormAddTxt from './ClassCreationFormAddTxt'
import ClassCreationFormStep13 from './ClassCreationFormStep13'


import './CreateClassOnBoardingForm.css';

const stepPages = [
  ClassCreationFormName,
  /*ClassCreationFormProfilePic,
  ClassCreationFormEmail,
  ClassCreationFormClass,
  ClassCreationFormWillLearn,
  ClassCreationFormMaxStudent,
  ClassCreationFormToBring,
  ClassCreationFormSchedule,
  ClassCreationFormLocation,
  ClassCreationFormCost,
  ClassCreationFormTags,
  ClassCreationFormAddTxt,
  ClassCreationFormStep13*/
];

const CreateClassOnBoardingForm = () => {

      const [step, setStep] = React.useState(0);

      const onPrevClick = React.useCallback(
        (event) => {
            event.preventDefault();
            setStep(() => Math.max(step - 1, 0));
        },
        [step, setStep]
      );

      const onNextClick = React.useCallback(
        (event) => {
          event.preventDefault();
          setStep(() => Math.min(step+1, stepPages.length-1))
        },
        [step, setStep]
      );

      const onSubmitClick = React.useCallback(
        (event) => {
          event.preventDefault();
          window.open("/successfull", "_self")
        },
        [step, setStep]
      );


      return (
        <div className="form-container">
          <Row className="row-container">
            <Col xs sm="1" className="form-arrow-elt-prev">
              {
                  step !== 0 ? (
                    <i class="fas fa-arrow-left fa-2x" onClick={onPrevClick} style={{color: "#616161"}}></i>
                  ) : (
                    <i class="fas fa-user fa-2x" style={{color: "#616161"}} size={32}></i>
                  )
              }
            </Col>
            <Col>{stepPages[step]}</Col>
            <Col xs sm="1" className="form-arrow-elt-next">
              {
              step !== stepPages.length-1 ? (
                    <i class="fas fa-arrow-right fa-2x" onClick={onNextClick} style={{color: "#616161"}}></i>
                  ) : (
                    <i class="fas fa-arrow-right fa-2x" onClick={onSubmitClick} style={{color: "#616161"}}></i>
                  )
              }
            </Col>
          </Row> 
        </div> 
      )
}

export default CreateClassOnBoardingForm;

我有意注释了列表 stepPages 中的所有元素,以使其成为第一个元素。

ClassCreationFormName 定义如下:

import React from 'react';
import TextContents from '../../assets/translations/TextContents'
import './CreateClassOnBoardingForm.css';

export const ClassCreationFormName = () => {

  const [isFocused, setIsFocused] = React.useState('false')

  const handleFocus = () =>  setIsFocused(() => 'true')
  const handleBlur = () => setIsFocused(() => 'false')


  //const { label, ...props } = this.props;
  const labelStyle = {
    position: 'absolute',
    left: 20,
    top: !isFocused ? 50 : 20,
    fontSize: !isFocused ? 28 : 20,
    color: !isFocused ? '#616161' : '#ff7255',
    fontFamily: "Source Sans Pro",
    fontWeight: 'bold',
  };

  return (
      <div>
        <label style={labelStyle}>
          {TextContents.FormClassTeacherName}
        </label>
        <input className="form-element-input"
          //{...props}
          id="classTeacherName"
          name="classTeacherName"
          onFocus={handleFocus}
          onBlur={handleBlur}
          //onChange={this.props.handleChange}
        />
      </div>
    );
  
}

它仍然显示:

知道为什么它没有显示任何东西吗?

【问题讨论】:

    标签: javascript reactjs react-component react-functional-component


    【解决方案1】:

    尝试创建如下数组:

    const stepPages = [
           <ClassCreationFormName />,
           // etc.
    ];
    
        
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多