当前位置: 首页 > 面试题库 >

React-用户定义的JSX组件未呈现

彭烨烁
2023-03-14
问题内容

我一直在尝试进行AJAX调用,然后在检索到它之后将其添加到我的视图中。

当前代码实际上什么也没有发生。

const View = () => (
    <div>
     <h1>Reports</h1>
   <statisticsPage />
    </div>
);
export default View;


var statisticsPage = React.createClass({
  getInitialState: function() {
     return {info: "loading ... "};
  },
  componentDidMount: function() {
     this.requestStatistics(1);
  },
  render: function() {
    return (
        <div>info: {this.state.info}</div>
    );
  },
  requestStatistics:function(){
      axios.get('api/2/statistics')
      .then(res => {
        values = res['data']
        this.setState({info:1})
        console.log('works!!')
      });

    }

  })

问题答案:

您的组件名称必须以大写字母开头,因为以小写字母开头的组件会被搜索为默认DOM元素,例如div, p, span etc。对于您的statisticsPage组件,情况并非如此。将其设置为大写即可。

根据文档:

当元素类型以lowercase字母开头时,它指的是诸如或的内置组件,并导致将字符串'div' 或“
span”传递给React.createElement。以大写字母开头的类型,例如,<Foo />编译React.createElement(Foo)并对应于JavaScript文件中定义或导入的组件。

我们建议使用大写字母命名组件。如果确实有一个以lowercase字母开头的组件,请在JSX中使用它之前将其分配给大写变量。

const View = () => (

    <div>

     <h1>Reports</h1>

   <StatisticsPage />

    </div>

);







var StatisticsPage = React.createClass({

  getInitialState: function() {

     return {info: "loading ... "};

  },

  componentDidMount: function() {

     this.requestStatistics();

  },

  render: function() {

    return (

        <div>info: {this.state.info}</div>

    );

  },

  requestStatistics:function(){

        console.log('here');

        this.setState({info:1})

        console.log('works!!')





    }



  })



ReactDOM.render(<View/>, document.getElementById('app'));


<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>



<div id="app"></div>


 类似资料:
  • 我正在编写一组定制的PrimeFaces组件,使用PrimeFaces5.0,并在JBoss EAP6.2中运行。 null 2.2在myFaceStest.taglib.xml中,我定义了输入标记: 2.3在input.java(我的自定义组件)中,我执行以下操作: 2.4此组件的呈现器包含以下内容: 给定这种设置,为什么自定义组件不会呈现?我的jboss日志中没有任何内容,即使日志级别设置为d

  • 我正在尝试用汇总和几个CreateReact应用程序原型一个微前端架构。但是,当我在本地将我的外部应用程序链接到容器应用程序时,我遇到以下错误: React未定义 23500 |返回/纯/反应。createElement(“div”,{^23501 | id:“container”,23502 | className:“flex-flex col h-screen”23503 |},/#PURE/

  • 在我的React17.0.1 SPA翻译应用程序中,我有一个包含两个部分的页面。顶部用于输入,底部用于该输入的翻译。我在为该页面使用单个上下文/状态时遇到过问题,因为翻译是由远程API执行的,当它返回时,如果不更新输入部分并将其重置为调用翻译API时所保持的值,我就无法更新UI。 因此,我将页面分成两个上下文,一个用于输入,一个用于翻译。到目前为止还好。翻译的渲染是我第一次做的。但是,尽管翻译上下

  • 我想动态呈现JSX,如下所示; 因此,我希望仅当“showSubTextAndIcon”为true时,才渲染该子文本和图标。现在,上述方法不起作用,我得到一个语法错误,说:; 相邻的JSX元素必须包装在一个封闭的标记中。你想要一个JSX片段吗 这工作,如果我添加一个包装列布局。然而,当show SubTextAndIcon是真的时,这会扰乱我的布局。 注意:列布局是从材料ui库派生的。

  • 我有一个React应用程序,目前正在使用react-router@4.2.0,当URL更改时,我正在努力渲染特定的组件。 当我尝试访问时,CityList组件返回一个PropTypes错误。我已经尝试在LocationsWrapper中的Route组件中添加,然后再添加Main config,但是,这会影响其他路由,例如,使其变为空。 //浏览器路由器 //路由器配置-(路由) 我最好避免

  • 如何使用JSX进行条件渲染? 例如,我这里有div,如果props的值为null,我想呈现文本“不知道”,否则如果props不等于null,则呈现props。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!