我正在使用 React.js 和 firebase 制作一个应用程序,用户可以在其中输入姓名和此人的地址。
firebase 中的对象如下所示:
L1NSTjqA10Qc85d7Kcc
- name: John Doe,
- address: 1 Maple Ave
我已将名称和地址成功打印到 DOM 上,但我想按名称的字母顺序对其进行排序。
所以我的列表看起来像这样:
Jane Doe - 34 Green Street
John Doe - 1 Maple Ave
Riley Smith - 3 Happy Street
到目前为止,这是我的 JSX,用于在父组件上映射对象数组时:
<ul>
{this.state.contacts.map((res)=> <List data={res}/>)}
</ul>
为了以防万一,这是我的 componentDidMount:
componentDidMount() {
const dbRef = firebase.database().ref();
dbRef.on("value", (firebaseData) => {
const itemsArray = [];
const itemsData = firebaseData.val();
for (let itemKey in itemsData) {
itemsArray.push(itemsData[itemKey])
}
this.setState({ contacts: itemsArray})
})
}
我试图从另一个堆栈溢出论坛执行以下操作,但是它没有用:
const myData = [].concat(this.state.contacts)
.sort((a,b)=> a.name > b.name
.map((res)=> <List data={res}/>);
原文由 YVH 发布,翻译遵循 CC BY-SA 4.0 许可协议
您尝试排序然后映射的逻辑部分可以像这样完成。
或者如果你想做得更短,你可以这样做。
localeCompare
函数 是—的一个方法String
在您调用的方法中
在你的
render
方法中执行以下操作这有帮助吗?