javascript - 基于 react Prop 的渲染不起作用

标签 javascript reactjs laravel-mix

所以我有这个组件

import React from 'react';
import ReactDOM from 'react-dom';

import NeoHeader from './header/NeoHeader';
import NeoLoginModal from './modal/NeoLoginModal';

class Neo extends React.Component {
    constructor(props) {
        super(props);
        this.state = {loginModal: false};
    }
    render() {
        return( <NeoHeader/> { this.state.loginModal ? <NeoLoginModal /> : null })
    }
}

ReactDOM.render(
  <Neo/>,
  document.getElementById('react-wrapper')
);

如您所见,当状态属性设置为 true 时,我试图显示组件 NeoLoginModal。但是,使用 Laravel mix 进行构建会在 {this..} 开始时出现意外的标记错误。这在多个地方被记录为执行此操作的正确方法,那么错误是什么?

最佳答案

问题不在 Laravel Mix 中,而是在您的组件 HTML 结构中。在 React 中,您不能将 sibling 渲染为一级元素。为了使您的代码正常工作,您应该用父标记包装两个子组件,例如:

render() {
    return (
        <div>
            <NeoHeader />
            { this.state.loginModal ? <NeoLoginModal /> : null }
        </div>
    );
}

关于javascript - 基于 react Prop 的渲染不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44011964/

相关文章:

javascript - 嵌套函数的正确 CoffeeScript 语法

javascript - HTML5 时间轴、甘特图控件

javascript - 适当的非字符串 Javascript 异常

javascript - jquery/js 中添加按钮时出错

javascript - Babel Decorators 转换,无论我尝试什么,都会不断获得意想不到的标记(使用 React 项目)

javascript - React 模块导入/导出解析错误 : Line 1: Illegal import declaration (gulp)

javascript - 延迟加载的 vue-router 组件不适用于 SSR

laravel-5 - Laravel 5.7 + Font Awesome

javascript - 如何使用 React Native 知道 mac 模拟器使用的字体系列

css - 如何将 feather-icons 编译成 css 文件?