Javascript React组件this.props始终为空
我遵循了of,试图从处理参数的React组件中的路由访问参数。然而,当我期望它包含来自Javascript React组件this.props始终为空,javascript,reactjs,reactjs-flux,react-router,react-router-component,Javascript,Reactjs,Reactjs Flux,React Router,React Router Component,我遵循了of,试图从处理参数的React组件中的路由访问参数。然而,当我期望它包含来自gamesView路径的gameId时,从render或componentDidMount内部的console.log对this.props的结果总是{} 启动路由器的client.js: // HTML5 History API fix for local if (config.environment === 'dev') { var router = Router.create({ routes:
gamesView
路径的gameId
时,从render
或componentDidMount
内部的console.log
对this.props
的结果总是{}
启动路由器的client.js
:
// HTML5 History API fix for local
if (config.environment === 'dev') {
var router = Router.create({ routes: routes });
} else {
var router = Router.create({ routes: routes, location: Router.HistoryLocation });
}
router.run(function(Handler) {
React.render(
<Handler />,
document.getElementById('app')
);
});
…和包装其他路线的app.js
,我在RouteHandler
中尝试了使用和不使用{…this.props}
。如果我console.log(this.props)
从render
函数内部执行,则此处也返回{}
:
var App = React.createClass({
render: function() {
return (
<div className='container'>
<div className='row'>
<RouteHandler {...this.props} />
</div>
</div>
);
}
});
module.exports = App;
有人有什么想法吗?只有在路由器中定义的组件上才能看到这些参数<代码>应用程序对它们一无所知。但是,如果您将
console.log(this.props.params)
放在gamesView
组件中,您应该会看到它们。事实证明,这是由于我使用了旧版本的RR(v0.11.6)
查看它显示我需要使用一个Router.State
mixin,然后通过var gameId=this.getParams().gameId获取期望的参数代码>
在不升级RR的情况下,GamesView的原始示例的工作版本将变为:
var React = require('react');
var Router = require('react-router');
var { Route, RouteHandler, Link } = Router;
var GamesView = React.createClass({
mixins: [ Router.State ],
render: function() {
var gameId = this.getParams().gameId;
return (
<div>
<h1>Game Name</h1>
<p>{gameId}</p>
</div>
);
}
});
module.exports = GamesView;
var React=require('React');
var-Router=require('react-Router');
var{Route,RouteHandler,Link}=路由器;
var GamesView=React.createClass({
mixins:[路由器.状态],
render:function(){
var gameId=this.getParams().gameId;
返回(
游戏名称
{gameId}
);
}
});
module.exports=GamesView;
应该是
@pkurek吗?我相信我应该能够使用,而不必在RouteHandler中明确命名道具。不幸的是,这也不起作用@Hal,我以前尝试过,并编辑了上面的原始示例,以显示当我尝试从处理该路由的组件访问this.props
时会发生什么。
var GamesView = React.createClass({
render: function() {
var { gameId } = this.props.params;
return (
<div>
<h1>Game Name</h1>
<p>{gameId}</p>
</div>
);
}
});
module.exports = GamesView;
var React = require('react');
var Router = require('react-router');
var { Route, RouteHandler, Link } = Router;
var GamesView = React.createClass({
mixins: [ Router.State ],
render: function() {
var gameId = this.getParams().gameId;
return (
<div>
<h1>Game Name</h1>
<p>{gameId}</p>
</div>
);
}
});
module.exports = GamesView;