javascript - react this.props.title 为空!!为什么?

标签 javascript reactjs react-router jsx

我有 3 个状态(状态、标题、舞蹈)

我使用react-router、react-switch、React.cloneElement。

App.jsx

   var React = require('react');
    var io = require('socket.io-client');
    var Router = require('react-router');
    var RouteHandler = require('react-router').RouteHandlerl;
    var Header = require('./parts/Header');
    module.exports =  class App extends React.Component {
      constructor(){
        super();

        this.state = {
          status: 'disconnected',
          title:'no Tile',
          dance: 'dance'
      };
      }

        render() {
              return (
                <div>
                  <Header title={this.state.title} status={this.state.status }  />
                  {React.cloneElement(this.props.children,this.state)} 
                  </div>
              );
            }
          }

并且想要在 Audience 中花费状态(标题)!

问题是this.props.title为空为什么? 必须 this.props.title == 'no Tile'

Audience.jsx

var React = require('react');

    module.exports =  class Audience extends React.Component {

        render(){// this.props.title is null ???
            return (<h1>Audience : {this.props.title}</h1>);
        }
    }

在应用程序客户端中运行

app-client.jsx

  var React = require('react');
    var Router = require('react-router-dom');
    var BrowserRouter = require('react-router-dom').BrowserRouter;
    var Route = require('react-router-dom').Route;
    var Switch = require('react-router-dom').Switch;
    var ReactDOM = require("react-dom");
    var App = require("./components/APP");
    var Audience = require("./components/Audience");


     class Run extends React.Component {

        render(){
            return( 
            <BrowserRouter  >
                <Switch title={this.props.title} > 
                    <Route  path="/" component={Audience}   title={this.props.title} />

               </Switch>
           </BrowserRouter>
           );
        }
    }


        ReactDOM.render( 
       <App >
            <Run  />
        </App>
       ,
        document.getElementById('react-container')
);

最佳答案

因为 Route 组件没有将 props 传递给匹配的组件。尝试这样的事情:

<Route  path="/" render={() => <Audience title={this.props.title} />} />

还有Check out more examples from react-router docs.

关于javascript - react this.props.title 为空!!为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52016401/

相关文章:

javascript - 在非 react 网页中呈现 react 应用程序

javascript - 从 React 中的自定义元素修改属性

javascript - 本地 React 构建有效,但服务器构建 js css 文件时出现错误 404。如何让包裹正确构建路径?

html - 防止React-router-dom刷新页面并重置点击时输入的信息

javascript - 使用 Cheerio 和 jsonframe 抓取时,获取 TypeError : selector. includes is not a function

javascript - 使用 jquery ajax 加载外部 javascript 文件的最佳方法?

javascript - 如何处理客户端 React 应用程序的外部重定向?

reactjs - React 路由循环 - 根据路由链接显示确切的信息

javascript - 在我的 .js 文件中使用 Jquery

javascript - 如何将新用户添加到我的 userDatabase 对象中