字符串比较是对React-JSS中的变量进行动态样式化的正确方法吗?

时间:2018-09-20 02:41:02

标签: reactjs jss

我在这里有一个沙箱:

https://codesandbox.io/s/p2wy9pp8lx

我有一些这样的动态样式:

function day(first, last) {
    var firstIndex;
    var lastIndex;
    var weekDays = [
        { index: 0, name: 'Monday' },
        { index: 1, name: 'Tuesday' },
        { index: 2, name: 'Wednesday' },
        { index: 3, name: 'Thursday' },
        { index: 4, name: 'Friday' },
        { index: 5, name: 'Saturday' },
        { index: 6, name: 'Sunday' }
    ];

    weekDays.forEach(function (item) {
        firstIndex = item.name.toLowerCase() === first.toLowerCase() ? item.index : firstIndex;
        lastIndex = item.name.toLowerCase() === last.toLowerCase() ? item.index : lastIndex;
    });

    if (firstIndex === undefined || lastIndex === undefined) { return; }

    var days = [];
    weekDays.forEach(function (item) {
        if (item.index >= firstIndex && item.index <= lastIndex) {
            days.push(item.name);
        }
    });

    console.log(days.join(', '));
}

对于像这样的课程:

const styles = {
  fooDisplay: props => ({
    display: props.variant === "foo" ? "block" : "none"
  }),
}

这就是我想要的。

虽然使用字符串比较是实现此目的的正确方法吗?还是对性能不利?

1 个答案:

答案 0 :(得分:1)

我认为最佳做法是在导入元素时在每个元素上导出变量常量,这样的示例如下:

<Button variant={Button.Variant.PRIMARY}> This is a primary button </Button>

在Button上,您可以使用相同的常量this.props.variant === Variant.Primary

进行检查

字符串比较没有真正的性能问题,它只是获得相同解决方案的一种弱类型方法,看起来有点混乱。这种方法意味着没有错误的余地,而且意图很明显。

如果您需要更多代码来理解我的意思,请告诉我