javascript - 如何制作一个可以在没有数据的情况下渲染然后用数据渲染的 react 组件?

标签 javascript reactjs dom-events

我有一种情况,我确定这很常见,但我还没有学会完成它的 react 方式。假设我有这个:

var appView = new React.createClass({
    render: function() {
        return (
            <div>
                <SomeSubview/>
            </div>
        )
    }
});

React.render(
    React.createElement(appView),
    $('#app').get(0)
);

我的问题是我应该如何创建 SomeSubView react 组件,以便它可以在没有任何数据的情况下正确渲染,然后在数据可用时渲染显示一些数据。我已经设置了 pub/sub 系统,所以我希望能够订阅一个事件并以这种方式将数据获取到 SomeSubViewSomeSubView 可能看起来像这样:

SomeSubView = new React.createClass({
    componentDidMount: function() {
        pubsub.subscribe({
            callback: function() {
                // something the sets the state or a prop of this component
            }
        });
    },
    render: function() {
        // something that renders properly when 
        // there is no data and renders the data when there is data
        return (
            <div></div>
        )
    }
});

我不知道这是否是 react 组件上的状态或 Prop 的情况?我不知道在渲染函数中放置条件是否是最佳实践?

最佳答案

在您的 SomeSubView 中,只需检查数据在您的渲染函数中是否可用,但在返回标记之前。

像这样:

SomeSubView = new React.createClass({
    componentDidMount: function() {
        pubsub.subscribe({
            callback: function() {
                // something the sets the state or a prop of this component
            }
        });
    },
    render: function() {
        // something that renders properly when 
        if( this.state.data.length > 0 ){
            var data = <li>{this.state.data}</li>;
        }

        return (
            <div>{data}</div>
        )
    }
});

如果未设置变量数据,React 将简单地忽略它作为不存在。

您当然也可以在状态数据上使用 .map() 来循环标记,就像在大多数渲染示例中一样。

关于javascript - 如何制作一个可以在没有数据的情况下渲染然后用数据渲染的 react 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30229478/

相关文章:

javascript - 如何使用 Google Polymer 实现纸卡的简单搜索

javascript - 将 EventEmitter 跨步到调试器中的监听器

javascript - Facebook JavaScript API

javascript - Google Maps API v3 : Passing values to Listener function(), 以便在单击标记时形成一个圆圈?

javascript - 如何使用 Youtube iframe API 将数据传递给 onStateChange 事件处理程序

javascript - Socket.IO 中间件,io.use

reactjs - 解决react依赖问题、漏洞、警告、冲突和不同版本

reactjs - 使用 React 显示来自 fetch api 的数据

reactjs - 如何将文本左对齐。在 react 工具提示中?

javascript - 其他组合框的组合框更改值