将道具从孙辈传递给父母

MichałLach

我有以下React.js应用程序结构:

<App />
  <BreadcrumbList>
    <BreadcrumbItem />
  <BreadcrumbList/>
<App /> 

问题是,当我单击时<BreadcrumbItem />,我想在其中更改状态<App />

我使用回调将道具传递到,<BreadcrumbList/>但是那是我走了多远。是否有pattaren如何轻松地将道具传递到要素树上?

如何在<App />不进行任何回调链接的情况下将prop传递给

安东尼·克雷根

如果您正在做简单的事情,那么通常最好将状态更改通过组件层次结构传递,而不是专门为此目的创建存储(无论它可能是什么)。我将执行以下操作:

面包屑项目

var React = require('react/addons');
var BreadcrumbItem = React.createClass({

embiggenMenu: function() {
    this.props.embiggenToggle();
},

render: function() {
    return (
            <div id="embiggen-sidemenu" onClick={this.embiggenMenu} />
    );
}
});

module.exports = BreadcrumbItem ;

然后通过BreadcrumbList组件将其传递给父对象。

 <BreadcrumbItem embiggenToggle={this.props.embiggenToggle}>

...以及UP到App,然后使用它来设置状态。...

var React = require('react/addons');

var App = React.createClass({

embiggenMenu: function() {
    this.setState({
        menuBig: !this.state.menuBig
    });
},

render: function() {
    return (

        <div>

            <BreadcrumbList embiggenToggle={this.embiggenMenu} />

        </div>

        )
    }
});
module.exports = BreadcrumbItem;

此示例切换了一个简单的布尔值,但是您可以忽略任何喜欢的内容。我希望这有帮助。

我没有对此进行测试,但是(迅速地)从一个实际的示例中删除了它。


编辑:根据要求,我将在含糊的内容上进行扩展:“您可以放弃任何内容”。

如果您要基于数组制作导航菜单,并且需要将所选项目传递给父项,则可以执行以下操作

var React = require('react/addons');

var ChildMenu = React.createClass({


getDefaultProps: function () {
    return {
        widgets : [
            ["MenuItem1"],
            ["MenuItem2"],
            ["MenuItem3"],
            ["MenuItem4"],
            ["MenuItem5"],
            ["MenuItem6"],
            ["MenuItem7"]
        ]
    }
},

handleClick: function(i) {
    console.log('You clicked: ' + this.props.widgets[i]);
    this.props.onClick(this.props.widgets[i]);
},

render: function() {
    return (
        <nav>
            <ul>
                {this.props.widgets.map(function(item, i) {
                    var Label = item[0];

                    return (
                        <li
                            onClick={this.handleClick.bind(this, i)}
                            key={i}>

                            {Label}
                        </li>
                    );
                }, this)}
            </ul>
        </nav>
    );
}
});

module.exports = ChildMenu;

然后,您将在父级中执行以下操作:

var React = require('react/addons');

var ChildMenuBar = require('./app/top-bar.jsx');

var ParentApp = React.createClass({

widgetSelectedClick: function(selection) {
    //LOGGING
    //console.log('THE APP LOGS: ' + selection);

    //VARIABLE SETTING
    var widgetName = selection[0];

    //YOU CAN THEN USE THIS "selection"
    //THIS SETS THE APP STATE
    this.setState({
        currentWidget: widgetName
    });
},

render: function() {
        return (
                <ChildMenu onClick={this.widgetSelectedClick} />
        );
    }
});

module.exports = ParentApp;

我希望这有帮助。感谢您的支持。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过道具将价值从无状态的孩子传递给父母

来自分类Dev

反应本地-将导航道具从父母传递给孩子

来自分类Dev

将道具从父母传递给孩子时出错-类型无效

来自分类Dev

将道具从孩子传递到父母(无上下文)

来自分类Dev

反应:将道具传递给后代

来自分类Dev

将道具传递给普通儿童

来自分类Dev

将道具传递给子组件的问题

来自分类Dev

无法将道具传递给外部const?

来自分类Dev

将样式传递给样式道具的问题

来自分类Dev

将道具传递给DrawerNavigator中的contentComponent

来自分类Dev

TypeScript将道具传递给孩子

来自分类Dev

反应:将道具传递给后代

来自分类Dev

将道具传递给子组件Cyclejs

来自分类Dev

将道具传递给子组件onClick

来自分类Dev

在路由期间将道具传递给组件

来自分类Dev

将道具传递给 tabNavigator 的屏幕

来自分类Dev

将道具从 MaterialBottomTabNavigator 传递给组件

来自分类Dev

将道具从 Laravel 传递给 Svelte 组件

来自分类Dev

Jenkins如何将子工作的价值传递给父母?

来自分类Dev

将功能从父母传递给孩子

来自分类Dev

如何将价值从Boostrap模态孩子传递给父母?

来自分类Dev

如何通过钩子将状态从孩子传递给父母

来自分类Dev

将数据从孩子传递给父母React Hooks

来自分类Dev

Blazor将数据从父母传递给孩子

来自分类Dev

如何将服务从孩子传递给父母?

来自分类Dev

如何将变量从孩子传递给父母

来自分类Dev

将数据onChange从孩子传递给父母?角度的

来自分类Dev

传递状态或道具以将值传递给子组件

来自分类Dev

将道具传递给情态传递每个对象