我是react新手,在使用react路由器时遇到了一个问题,并写下以下代码:
var router = (
<Router history={browserHistory}>
<Route data = {linksData} path = "/monitor/" component = {App}>
<Route path = "category/:categoryId" component = {Category}>
</Route>
</Route>
</Router>
);
ReactDom.render(路由器,ulElement);
我希望路线中的组件可以附加一些道具,如下所示:
<App data={[{id:"01",name:"blah"},{},{}...]} />
这样我就可以迭代应用程序的渲染函数中的“数据”。
App组件定义如下:
var App = React.createClass({
getInitialState:function(){
return {
city: "全国",
time: new Date().toJSON().slice(0,10), //2016-04-29
interval:1000*60 //1 minite
}
},
render:function(){
//category:{id: "01",name:"cars"}
var lis = this.props.route.data.map(function(category,index){
//pathname+category.categoryId+
var url_path = "/monitor/category/${category.id}";
var url_query = {city:this.state.city,time:this.state.time,interval:this.state.interval};
return (
<li>
<a href={{pathname:url_path,query:url_query}}>{category.name}</a>
</li>);
});
return (
<div>
<ul className = "grids">
{lis}
</ul>
</div>)
}
});
有人能帮我吗?我尝试了以下解决方案:
<Route data = {linksData} path = "/monitor/" component = {App}>
但它失败了,并表示this.props未定义。:(
请改用以下语法:
<Route path="/monitor/" render={() => <App data = {linksData}></App>} />
react router仅注入这些道具
(1)位置(2)参数(3)路由(4)路由图(5)子级
因此,如果要获取数据并应用
1。使用onEnter函数获取数据
2。写入高阶组件
执行道具传递的功能组件是正确的选择。
<Route path = "/monitor/" component = {props => <App data={linksData} {...props}/>}>
上面传递了你想要的任何自定义参数,比如data
,也传递了路由器注入的所有道具。我喜欢这个解决方案,因为它简洁明了。当然,如果您希望代码更具描述性,您可以将函数组件存储在变量中,并将其作为路由组件传递。
问题内容: 我已经看到了几种有神论的方法,它们似乎都起作用,但是我只是想知道一种方法是否比另一种更好。 例如,一个叫你可以这样做: 您还可以执行以下操作: 这些“正确”之一吗? 问题答案: 来自类javadoc的文字副本 JFrame类与Frame略有不兼容。像所有其他JFC / Swing顶级容器一样,JFrame包含JRootPane作为其唯一的子级。根窗格提供的内容窗格通常应包含JFrame
问题内容: 我想在JDialog中添加诸如TextField,Button等组件。 问题答案: 1)首先创建一个Jpanel 2)将组件添加到该JPanel 3)创建JDialog 4)将JPanel添加到JDialog
让我们开始定义一个新的组件,我们将用来显示信用卡信息。 credit-card.component.ts 此组件依靠获取信用卡号,并通过creditCardMask管道隐藏掉除最后4位之外的数字。 credit-card-mask.pipe.ts 一切就绪后,我们现在可以在根组件中使用 。 app.component.ts app.module.ts 注意,我们已将组件CreditCardComp
我需要在窗格上有一个选择监听器和选择方法,以便在单击节点时能够监视并显示突出显示。 我做了以下操作: 这工作得很好 - 但是我无法再使用场景构建器,因为我的FXML引用了此而不是。我不确定如何将我的自定义窗格放入场景构建器。我已经看过其他问题,它们都是FXML和控制器的组合 - 这只是一个。 有没有人知道这样做的方法,或者在初始化时将< code>Pane换成< code > PaneWithSe
在运行时添加到当单击时。 我使用以下代码: 但是在中没有显示任何。
我有一些object.id-s,我试图将其作为元组存储在用户会话中。当我添加第一个时,它可以工作,但是tuple看起来像,但是当我尝试使用添加新的tuple