React实现题目的小组件


最近在写一个android的学习类应用,其中一个就是涉及知识体系,想了一下,决定还是混合webview来写,方便修复资料的错误与更新资料。

由于知识体系,基本就是章节标题,章节条目,涉及重点的颜色突出。

导入资料就直接用写好的组件就好了。

这里用的是react。

比如这个:章节是:信息化管理,小结是:企业信息化的发展

null

下面是组件代码:Ui使用是bootstrap3框架

//列表卡片
var ul_card = React.createClass({
    displayName: "ul_card",
    propTypes: {
        ul_type: React.PropTypes.string,
        ul_head: React.PropTypes.string,
        ul_li_items: React.PropTypes.arrayOf(React.PropTypes.String)
    },
    getInitialState: function getInitialState() {
        return {
            ul_head: this.props.ul_head,//接收章节名
            ul_type: this.props.ul_type,//接收章节类型,红色重要,绿色等
            ul_li_items: this.props.ul_li_items//接收小结,数组
        };
    },
    render: function() {
        return React.createElement(
            "div", {
                className: "container"
            },
            React.createElement(
                "div", {
                    className: this.props.ul_type
                },
                React.createElement(
                    "small",
                    null,
                    this.props.ul_head
                )
            ),
            React.createElement(
                "ul", {
                    className: "list-group"
                },//循环渲染小结
                this.props.ul_li_items.map(function(row, rowid) {
                    return React.createElement(
                        "li", {
                            className: "list-group-item",
                            key: rowid
                        },
                        row
                    );
                })
            )
        );
    }
});

null

渲染代码:

在需要的html页面引入js(如果是JSX需要转换一下,es6也需要换一下,这里直接browser.js处理了,很慢。。)

<div id="il_card"></div>
//渲染js
ReactDOM.render(
        React.createElement(ul_card,{
        ul_head:"4.3信息化管理",
        ul_type:"sl_green",
        ul_li_items:[
            "企业信息化管理的发展"
        ]
    }),document.getElementById('ul_card')
    );

null

这样就好啦。这只是一个条例,很多的时候们就可以方便使用了。

下面是多个条例。

null

还有一个就是尾部,会有一个结束提示,比如,章节结束,每个页面都会有,直接用小组件。

虽然这个很简单,但是如果网站尾部都这样使用,就很大的简化的步骤。

代码:

//渲染代码
ReactDOM.render(
        React.createElement(over_tips,{tips:"本章节结束"}),document.getElementById("over_tips")
        );
//组件代码:
//结束提示组件
var over_tips = React.createClass({
    displayName: "over_tips",

    propTypes: {
        tips: React.PropTypes.string//接收参数
    },
    getInitialState: function getInitialState() {
        return {
            tips: this.props.tips
        };
    },
    render: function() {
        return React.createElement(
            "div", {
                className: "container"
            },
            React.createElement(
                "button", {
                    className: "btn btn-success col-xs-12"
                },
                this.props.tips
            )
        );
    }
});

null

null

null

这是一个案例大题:

同样的代码:

//案例组件
var eg = React.createClass({
    displayName: "eg",
    propTypes: {
        eg_title: React.PropTypes.string,
        eg_content: React.PropTypes.string,
        eg_how: React.PropTypes.arrayOf(React.PropTypes.string)
    },
    getInitialState: function getInitialState() {
        return {
            eg_title: this.props.eg_title,
            eg_content: this.props.eg_content,
            eg_how: this.props.eg_how
        };
    },
    render: function() {
        return React.createElement(
            "div", {
                className: "container-fluid"
            },
            React.createElement(
                "div", {
                    className: "eg_head panel"
                },
                React.createElement(
                    "div", {
                        className: "panel-heading"
                    },
                    React.createElement(
                        "h4", null, this.props.eg_title)),
                React.createElement(
                    "div", {

                        className: "panel-body"
                    },
                    React.createElement(
                        "div", {
                            className: "eg_content"
                        }, this.props.eg_content),
                    React.createElement(
                        "ul", {
                            className: "list-group"
                        },
                        this.props.eg_how.map(function(row, rowid) {
                            return React.createElement(
                                "li", {
                                    className: "list-group-item green",
                                    key: rowid
                                },
                                row)
                        })
                    )
                )
            ),

        )
    }

});

null

下面是答案:

为什么分开写呢,因为,答案太细了。。。还有就是不太熟悉react

查看解析,直接用react的onclick就好了。代码就不放了,基本一致,主要就是设计好分层的条例。就显得好看多了、

null

null

最后,别直接用browser转换,慢、有时候巨慢。还报错。


文章作者: 2winter
文章链接: https://2winter.com
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 2winter !
  目录