在React.js中导出/导入组件

ŠtefanOndáš

我是React.js的新手。我正在制作一个小型应用程序,其中包含身份验证和一些组件。我将应用程序划分为一些组件。首先是App.jsx:

var React = require('react');
var ReactDOM = require('react-dom');
var Login = require('./Login.jsx');

var App = React.createClass({
getInitialState: function() {
    return {
        url: 'url-to-my-API'
    };

},
render: function() {
    if (typeof localStorage !== 'undefined') {
            return (
                <Login url={this.state.url} />
                )

    } else {
        alert('Browser is not supported. Browser must support localStorage.')
        return (
        <div />
        )
    }   
}});

module.exports = App;

Login.jsx组件由用于授权用户的表单和为用户加载新组件的提交按钮组成。该组件由菜单和注销按钮组成。当用户单击以注销按钮时,Logout.jsx组件会有onClick事件。Logout.jsx看起来像这样:

var React = require('react');
var ReactDOM = require('react-dom');
var Login = require('./Login.jsx');

var Logout = React.createClass({
getInitialState: function() {
    return {
        url: this.props.url,
        login: false
    }
},
logout: function(e) {
    localStorage.setItem('username', '');
    localStorage.setItem('token', '');  
    this.backToLoginPage();
    document.getElementById('appContent').innerHTML = '';
},
backToLoginPage: function() {
    this.setState({
        login: true
    });
},
componentDidUpdate: function() {
    if (this.state.login) {
        ReactDOM.render(<Login url={localStorage.getItem('url')} />, document.getElementById('appLogin'));
    }
},
render: function() {
    if (this.state.login) {
        return (
            <span />
            )
    } else {

    return (
        <button name="logout" className="logoutButton btn primary" onClick={this.logout}>Logout</button>
        )
}
}});

module.exports = Logout;

如果用户单击注销按钮,它将返回以下内容:

Warning: React.createElement: type should not be null, undefined, boolean, or number. It should be a string (for DOM elements) or a ReactClass (for composite components).

Uncaught Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

您能帮我解决我在做什么错吗?

非常感谢。

ŠtefanOndáš

当我从中更改组件的语法时:

var React = require('react');
var ReactDOM = require('react-dom');
var Login = require('./Login.jsx');

var Logout = React.createClass({ ...

对此:

import React, { Component } from 'react';
import RectDOM from 'react-dom';
import Login from './Login';

export default class Logout extends React.Component { ...

现在正在工作。

因为是ES6,所以我不得不更改初始状态的函数(更改为Constructor())并绑定每个动作事件。

也许它可以帮助某人。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章