javascript - React.js的命名空间的组件
迷茫
迷茫 2017-04-10 15:45:06
[JavaScript讨论组]

在 React.js 的官方文档里,提到0.11开始支持的一个特性:命名空间的组件.
参考:http://facebook.github.io/react/docs/jsx-in-depth.html

var Form = MyFormComponent;
 
var App = (
  <Form>
    <Form.Row>
      <Form.Label />
      <Form.Input />
    </Form.Row>
  </Form>
);

var MyFormComponent = React.createClass({ ... });
MyFormComponent.Row = React.createClass({ ... });
MyFormComponent.Label = React.createClass({ ... });
MyFormComponent.Input = React.createClass({ ... });

小弟想自建一个控件来用,因而用了如下代码:

        var MysearchPage=React.createClass({
            render:function(){
                return (
                    <p>
                    </p>
                );
            }
        });
        MysearchPage.Title=React.createClass({
            render:function(){
                return (
                     <h1>MysearchPage!</h1>
                );
            }
        });
        MysearchPage.Search= React.createClass({
            render:function(){
                return (
                    <p>
                        {this.props.searchType}:<input type="text"/>
                        <button>Search</button>
                    </p>
                );
            }
        });
       var SearchPage=MysearchPage;

       var App=(
           <SearchPage>
               <SearchPage.Title />
               <SearchPage.Search searchType="Content"/>
           </SearchPage>
       );
       React.render(
            App,
            document.getElementById('nuno')
        );

结果发现既没有编译出错也没有任何内容显示.(推测感觉应该是SearchPage.Title没有插到SearchPage结点下面).请教哪位写过的能够告诉小弟一下,这个写法正确吗?哪里存在问题?多谢了~~~
如果改为:

       var App=(
           <p>
               <SearchPage.Title />
               <SearchPage.Search searchType="Content"/>
           </p>
       );

应该可以出结果.

所以由此另外问一个问题:

var MysearchPage=React.createClass({
            render:function(){
                return (
                    <p>
                    </p>
                );
            }
        });

与单纯用 p 的区别在哪里?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
迷茫
var MysearchPage=React.createClass({
    render:function(){
        return (
            <p>this.props.children</p>
        );
    }
});
阿神

你是期望给 MysearchPage 传入子组件,但是 MysearchPage 又没有通过 this.props.children 来获取子组件。
所以问题就在 MysearchPagerender() 没写对。 参照 @yywl 的写法即可。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号