订购UI控件JS,React

时间:2018-01-22 02:34:00

标签: javascript reactjs

我有几个输入控件来捕获用户界面中的文字,名为' First Name'和'姓氏'。想要根据区域设置订购这些控件。例如,如果locale为en,则名字应遵循姓氏。否则,如果locale是ja,则姓氏应该跟在名字后面。

我能想到的唯一解决方案是条件陈述。

我做了一点google,也探索过react-intl,但没有多大帮助。有没有更好的方法来根据区域设置处理控件的排序?

1 个答案:

答案 0 :(得分:1)

首先,您需要一个代表您数据的对象:

const fields = [
  {key: 'firstName', en: 'First Name', fr: 'Prenom'},
  {key: 'lastName', en: 'Last Name', fr: 'Nom'}
];

然后您可以按照自己喜欢的方式对其进行排序:

const locale = 'fr'; // Can be anything here, based on your config
const sortedFields = fields.sort((a, b) => {
  if (a[locale] > b[locale]) {
    return 1;
  }

  if (a[locale] < b[locale]) {
    return -1;
  }

  return 0;
});

对字段进行排序后,您可以渲染组件:

render() {
  return <div>
    {sortedFields.map(f => <span>{f.key}</span>)}
  </div>;
}