Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 如何连接JSX而不遇到;单根“;JSX问题_Javascript_Reactjs_React Jsx_Jsx - Fatal编程技术网

Javascript 如何连接JSX而不遇到;单根“;JSX问题

Javascript 如何连接JSX而不遇到;单根“;JSX问题,javascript,reactjs,react-jsx,jsx,Javascript,Reactjs,React Jsx,Jsx,我想知道如何在JSX中做到这一点。如果您查看下面的代码,就会发现有重复的部分,其中设置了,用于包装JSX。如何在if/else循环和单个return语句之外做到这一点,而不会遇到JSX的“单根”问题 buildComponent() { const { element: {title, type, items }, name } = this.props; const cssComponentName = name.toLowerCase(); if (type === 'string' ||

我想知道如何在JSX中做到这一点。如果您查看下面的代码,就会发现有重复的部分,其中设置了
,用于包装JSX。如何在if/else循环和单个return语句之外做到这一点,而不会遇到JSX的“单根”问题

buildComponent() {
const { element: {title, type, items }, name } = this.props;
const cssComponentName = name.toLowerCase();
if (type === 'string' || type === 'number') {
  return (
    <div className={`${cssComponentName}-container`}>
      <label htmlFor={name}>{title}</label>
      <input type="text" name={name} />
    </div>
  );
}

if (type === 'array') {
  return (
    <div className={`${cssComponentName}-container`}>
      <label htmlFor={name}>{title}</label>
      <select name={name}>
        { this.buildDropdown(items.enum, items.enumNames) }
      </select>
    </div>
  );
}
buildComponent(){
const{element:{title,type,items},name}=this.props;
const cssComponentName=name.toLowerCase();
如果(类型=='string'| |类型=='number'){
返回(
{title}
);
}
如果(类型=='array'){
返回(
{title}
{this.buildDropdown(items.enum,items.enumNames)}
);
}

}

可以使用无状态函数按以下可能的形式重新构造

buildComponent() {
  const { element: {title, type, items }, name } = this.props;
  const cssComponentName = name.toLowerCase();

  const DivWrapper = (props) => {
    return (
      <div className={`${cssComponentName}-container`}>
        <label htmlFor={name}>{title}</label>
       {props.children}
      </div>
    );
  };

  return (
    <DivWrapper>
    { (type === 'string' || type === 'number') ?
        <input type="text" name={name} /> :
      (type === 'array') ?
        <select name={name}>
          { this.buildDropdown(items.enum, items.enumNames) }
        </select> : null
    }
    </DivWrapper>
  );
}
buildComponent(){
const{element:{title,type,items},name}=this.props;
const cssComponentName=name.toLowerCase();
常量DivWrapper=(道具)=>{
返回(
{title}
{props.children}
);
};
返回(
{(类型=='string'| |类型=='number')?
:
(类型='array')?
{this.buildDropdown(items.enum,items.enumNames)}
:null
}
);
}

可以使用无状态函数按以下可能的形式重新构造

buildComponent() {
  const { element: {title, type, items }, name } = this.props;
  const cssComponentName = name.toLowerCase();

  const DivWrapper = (props) => {
    return (
      <div className={`${cssComponentName}-container`}>
        <label htmlFor={name}>{title}</label>
       {props.children}
      </div>
    );
  };

  return (
    <DivWrapper>
    { (type === 'string' || type === 'number') ?
        <input type="text" name={name} /> :
      (type === 'array') ?
        <select name={name}>
          { this.buildDropdown(items.enum, items.enumNames) }
        </select> : null
    }
    </DivWrapper>
  );
}
buildComponent(){
const{element:{title,type,items},name}=this.props;
const cssComponentName=name.toLowerCase();
常量DivWrapper=(道具)=>{
返回(
{title}
{props.children}
);
};
返回(
{(类型=='string'| |类型=='number')?
:
(类型='array')?
{this.buildDropdown(items.enum,items.enumNames)}
:null
}
);
}

您也可以尝试以下方法:

buildElement(type, name, items) {
   if (type === 'string' || type === 'number') 
     return buildInput(name);
   else if (type === 'array')
         return  buildSelect(name, items);
}    

buildSelect(name, items) {
   return (<select name={name}>
            { this.buildDropdown(items.enum, items.enumNames) }
           </select>);
}    

buildInput(name) {
   return (<input type="text" name={name} />);
}    

buildComponent() {
  const { element: {title, type, items }, name } = this.props;
  const cssComponentName = name.toLowerCase();

  return (
    <div className={`${cssComponentName}-container`}>
    <label htmlFor={name}>{title}</label>
    {this.buildElement(type, name, items)}
    </div>
  );
}
buildElement(类型、名称、项){
如果(类型=='string'| |类型=='number')
返回buildInput(名称);
else if(类型==='array')
返回buildSelect(名称、项目);
}    
buildSelect(名称、项目){
返回(
{this.buildDropdown(items.enum,items.enumNames)}
);
}    
buildInput(名称){
返回();
}    
buildComponent(){
const{element:{title,type,items},name}=this.props;
const cssComponentName=name.toLowerCase();
返回(
{title}
{this.buildElement(类型、名称、项)}
);
}

您也可以尝试以下方法:

buildElement(type, name, items) {
   if (type === 'string' || type === 'number') 
     return buildInput(name);
   else if (type === 'array')
         return  buildSelect(name, items);
}    

buildSelect(name, items) {
   return (<select name={name}>
            { this.buildDropdown(items.enum, items.enumNames) }
           </select>);
}    

buildInput(name) {
   return (<input type="text" name={name} />);
}    

buildComponent() {
  const { element: {title, type, items }, name } = this.props;
  const cssComponentName = name.toLowerCase();

  return (
    <div className={`${cssComponentName}-container`}>
    <label htmlFor={name}>{title}</label>
    {this.buildElement(type, name, items)}
    </div>
  );
}
buildElement(类型、名称、项){
如果(类型=='string'| |类型=='number')
返回buildInput(名称);
else if(类型==='array')
返回buildSelect(名称、项目);
}    
buildSelect(名称、项目){
返回(
{this.buildDropdown(items.enum,items.enumNames)}
);
}    
buildInput(名称){
返回();
}    
buildComponent(){
const{element:{title,type,items},name}=this.props;
const cssComponentName=name.toLowerCase();
返回(
{title}
{this.buildElement(类型、名称、项)}
);
}