子组件更改时刷新应用程序状态

科尔顿·艾伦

我有一个元素列表。当我单击向上或向下图标时,我希望列表重新排列,并最终使应用程序重新呈现,这样我就可以看到DOM中反映的更改。

更改列表位置是可行的。尝试运行该refreshState方法时遇到问题我将函数作为子项的属性传递,但调用该属性将返回未定义的函数。

问:如何从子组件中调用组件的方法?

代码:

<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Test</title>
    <script src="http://fb.me/react-with-addons-0.12.2.js"></script>
    <script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
</head>
<body>
    <style>
        /* CSS */
        span {
            margin:0 0 0 10px;
        }
    </style>
    <div id="app"></div>
    <script type="text/jsx">
        // React

        var _data = ['Red', 'Blue', 'Green'];


        function getState() {
            return {
                colors: _data,
            }
        };


        Array.prototype.swap = function(a, b) {
            var temp = this[a];
            this[a] = this[b];
            this[b] = temp;
        };


        var App = React.createClass({

            getInitialState: function() {
                return getState();
            },

            render: function() {
                var colors = this.state.colors.map(function(color) {
                    return (
                        <Color name={color} refreshState={this.refreshState} />
                    )
                });
                return (
                    <ul>{colors}</ul>
                )
            },

            refreshState: function() {
                return this.setState(getState());
            },

        });


        var Color = React.createClass({

            moveUp: function() {
                var current = _data.indexOf(this.props.name),
                    above = current - 1;

                if (above >= 0) {
                    _data.swap(current, above);
                }

                return this.props.refreshState();
            },

            moveDown: function() {
                var current = _data.indexOf(this.props.name),
                    below = current + 1;

                if (below < _data.length) {
                    _data.swap(current, below);
                }

                return this.props.refreshState();
            },

            render: function() {
                return (
                    <li>
                        <strong>{this.props.name}</strong>
                        <span onClick={this.moveUp}>^</span> 
                        <span onClick={this.moveDown}>v</span>
                    </li>
                )
            },

        });


        React.render(<App />, document.getElementById('app'));
    </script>
</body>
</html>
和W

注意到您已经解决了问题,但是我想提到您可以将范围传递给.map,这意味着无需出于描述的目的缓存范围:

this.state.colors.map(function(color) {
    return (
        <Color 
            key={_data.indexOf(color)}
            name={color}
            refresh={this.refreshState}
        />
    )
}, this); // pass the scope to .map

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server中的数据更改时自动刷新应用程序

来自分类Dev

尽管重建,Angular 应用程序不会在更改时刷新内容

来自分类Dev

React Native 应用程序在状态更改时变得无响应/崩溃

来自分类Dev

当父状态在React中更改时停止渲染子组件

来自分类Dev

子组件在每个状态更改时都重新呈现

来自分类Dev

React:子组件未在父状态更改时呈现

来自分类Dev

父状态更改时子组件不会更新

来自分类Dev

在闪亮的应用程序中,当源文件更改时,如何强制和嵌入式pdf查看器刷新

来自分类Dev

DialogFragment在方向更改时使应用程序崩溃

来自分类Dev

当Picker selectedValue更改时,SwiftUI 2.0应用程序崩溃

来自分类Dev

当应用程序变量更改时触发Firestore查询

来自分类Dev

主节点更改时,应用程序无法连接mongodb

来自分类Dev

Kivy应用程序在屏幕更改时退出

来自分类Dev

如何在包名称更改时停止应用程序?

来自分类Dev

路径应用程序更改时如何停止滚动事件?

来自分类Dev

当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

来自分类Dev

使用Nav组件的React Bootstrap刷新应用程序

来自分类Dev

当RN 0.61中的状态更改时,如何从主组件中重新渲染子组件?

来自分类Dev

包含iOS应用程序的数据更改时更新WatchKit应用程序

来自分类Dev

组件尺寸更改时未清除状态

来自分类Dev

功能组件在状态更改时重新呈现

来自分类Dev

组件未在 redux 状态更改时更新

来自分类Dev

状态更改时组件不更新

来自分类Dev

Redux - 如何从子组件访问应用程序状态?

来自分类Dev

通过其同级触发状态更改时,子组件不会重新呈现

来自分类Dev

react native:如何在状态更改时停止子组件的重新呈现?

来自分类Dev

React-redux:无法在父状态更改时触发子组件操作

来自分类Dev

在 android 应用程序中更改语言时应用程序状态更改

来自分类Dev

道具更改时子组件不会更新

Related 相关文章

  1. 1

    SQL Server中的数据更改时自动刷新应用程序

  2. 2

    尽管重建,Angular 应用程序不会在更改时刷新内容

  3. 3

    React Native 应用程序在状态更改时变得无响应/崩溃

  4. 4

    当父状态在React中更改时停止渲染子组件

  5. 5

    子组件在每个状态更改时都重新呈现

  6. 6

    React:子组件未在父状态更改时呈现

  7. 7

    父状态更改时子组件不会更新

  8. 8

    在闪亮的应用程序中,当源文件更改时,如何强制和嵌入式pdf查看器刷新

  9. 9

    DialogFragment在方向更改时使应用程序崩溃

  10. 10

    当Picker selectedValue更改时,SwiftUI 2.0应用程序崩溃

  11. 11

    当应用程序变量更改时触发Firestore查询

  12. 12

    主节点更改时,应用程序无法连接mongodb

  13. 13

    Kivy应用程序在屏幕更改时退出

  14. 14

    如何在包名称更改时停止应用程序?

  15. 15

    路径应用程序更改时如何停止滚动事件?

  16. 16

    当提供程序组件的父状态更改时,为什么不能更新子组件中的值(带有react上下文)?

  17. 17

    使用Nav组件的React Bootstrap刷新应用程序

  18. 18

    当RN 0.61中的状态更改时,如何从主组件中重新渲染子组件?

  19. 19

    包含iOS应用程序的数据更改时更新WatchKit应用程序

  20. 20

    组件尺寸更改时未清除状态

  21. 21

    功能组件在状态更改时重新呈现

  22. 22

    组件未在 redux 状态更改时更新

  23. 23

    状态更改时组件不更新

  24. 24

    Redux - 如何从子组件访问应用程序状态?

  25. 25

    通过其同级触发状态更改时,子组件不会重新呈现

  26. 26

    react native:如何在状态更改时停止子组件的重新呈现?

  27. 27

    React-redux:无法在父状态更改时触发子组件操作

  28. 28

    在 android 应用程序中更改语言时应用程序状态更改

  29. 29

    道具更改时子组件不会更新

热门标签

归档