javascript - react .js : reusable components vs mixin's utility functions

标签 javascript architecture reactjs mixins

假设我的 react.js 应用程序要显示日期,我想应用客户端浏览器/操作系统中设置的格式。有多个显示日期的组件,我可以使用多种方式在它们之间共享代码。

1.可重复使用的 React.js 组件,例如:

var React = require('react');

module.exports = React.createClass({
    render : function(){
        if(this.props.value === null || this.props.value===undefined)
            return false;
        var formattedValue =  new Date(this.props.value).toLocaleDateString();
        return(
            <span>
                {formattedValue}
            </span>
        );
    }
}); 

然后像这样使用它们:

var DateFormatter = require('./../formatters/Date');
<DateFormatter value={invoice.date} />

2.通过 React.js mixin 共享的实用函数,即:

module.exports = {
    renderDate : function(dateValue){
        if(dateValue === null || dateValue===undefined)
            return false;
        var formattedValue =  new Date(dateValue).toLocaleDateString();
        return(
            <span>
                {formattedValue}
            </span>
        );
    }
} 

然后只需将 mixin 添加到组件中并使用类似的东西

{this.renderDate(invoice.date)}

在我看来,目前这两种方法之间没有太大区别。但我很想听听社区对每种解决方案的优缺点的意见。 TIA!

最佳答案

一个方面是性能:如果你像上面那样写一个组件来显示日期,你可以用PureRenderMixin来标记它。 ,因为渲染输出仅依赖于 Prop 。这可能会稍微加快渲染速度,因为格式化只需要在日期更改时完成。

从简洁代码的 Angular 来看,我要么编写一个组件,要么使用一个仅将日期格式化为字符串的非 React 实用函数——无需耦合日期格式化和 dom 元素。像这样的东西:

function formatDate(dateValue){
    if(dateValue == null)
        return ""
    return new Date(dateValue).toLocaleDateString()
}

关于javascript - react .js : reusable components vs mixin's utility functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29146814/

相关文章:

algorithm - 现代处理器如何进行整数算术运算?

asp.net-mvc - EF 代码优先模块化设计

java - 设计可插拔积分和徽章系统

Javascript:接受参数的函数原型(prototype)

javascript - 异步/等待与同步功能改变 react 状态

javascript - 我可以将音频/视频对象从 expo-av 传递到 redux 状态吗?

javascript - 如何修复 429(请求过多)?

javascript - chrome 中的 SSRS 报告--报告未水平滚动

javascript - 当 - 或 时,ng-keypress 事件不会被触发。按数字键盘上的

javascript - 在给定索引上将字符串一分为二并返回两个部分