2016-03-28 88 views
2

這是奇特的。將數組傳遞給.map()錯誤

我傳遞由單個對象的陣列以一個陣營組件的渲染方法:

let content = this.state.links.map(link => { // eslint-disable-line 
    return (
    <li key={link._id}> 
     <a href={link.link}>{link.title}</a> 
    </li> 
); 
}); 

return (
    <h3> 
    <ul> 
     {content} 
    </ul> 
    </h3> 
); 

這是this.state.links輸出:

[{"_id":"56f9b418657c2d2353611b0f","link":"https://facebook.github.io/flux/","title":"flux"}]

這是一個與一個陣列目的。爲什麼我得到這個錯誤?:

enter image description here

UPDATE:我發現有點問題代碼:

沒關係進入這裏:

const _getAppState =() => { // eslint-disable-line return { links: LinkStore.getAll(), }; };

LinkStore .getAll()仍然返回一個包含對象的數組。

然後,下一次我們調用上面的函數: onChange() { console.log('4. In the View', _getAppState()); // this.setState(_getAppState()); }

enter image description here

還沒完全確定何時以及如何轉化爲一個字符串。如果你想深入瞭解代碼並親自體驗,請登錄here is the repo

+2

什麼是'的console.log(typeof運算this.state.links)'的輸出? – Pointy

+0

它作爲一個字符串出現! o.O – ilrein

+0

編譯後的代碼是什麼樣的? –

回答

1

服務器返回的主體仍然是JSON字符串。通過在JSON字符串上執行console.log(),轉義\在控制檯中被刪除。看起來你認爲價值被解析了,但事實上並非如此。對響應運行JSON.parse(body),它應該工作。

實施例:https://jsbin.com/bomehafeki/1/edit?js,console