当前位置: 首页 > 知识库问答 >
问题:

向管线组件添加道具

饶明亮
2023-03-14

我是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未定义。:(

共有3个答案

唐星晖
2023-03-14

请改用以下语法:

<Route path="/monitor/" render={() => <App data = {linksData}></App>} />
谷梁涵忍
2023-03-14

react router仅注入这些道具
(1)位置(2)参数(3)路由(4)路由图(5)子级

因此,如果要获取数据并应用
1。使用onEnter函数获取数据
2。写入高阶组件

葛霄
2023-03-14

执行道具传递的功能组件是正确的选择。

<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