我遇到一个错误:
无法读取未定义的属性“地图”
我的JSON数据:
{
"data": [
{
"id": 1,
"attention": 1
},
{
"id": 2,
"attention": 1
},
{
"id": 3,
"attention": 0
}
]
}
_handleOutput() {
var att = data.attention.map(function (data) {
return data.attention
});
}
console.log(att)
是否可以使用if-else将JSON输出数据与React DOM
进行比较?像这样:
if (data.attention === true || "1") {
return <span>✅</span>;
} else {
return <span>❌</span>;
}
然后我输出到表列表<td>{this._handleOutput()}</td>
答案 0 :(得分:1)
let obj = {
data: [
{
id: 1,
attention: 1
},
{
id: 2,
attention: 2
},
{
id: 3,
attention: 0
}
]
}
内部组件定义渲染功能
render(){
return (
<div>
{obj.data.map(a=>{
if(a.attention===1)
return <span>✅</span>
return <span>❌</span>;
})}
</div>
)
}
答案 1 :(得分:0)
data
是array
,而不是data.attention
,因为此map
不起作用。 map
在数组中工作。
答案 2 :(得分:0)
您正在尝试在数字字段上拨打地图。应该改为data.map
。
答案 3 :(得分:0)
数据是您的数组,而不是data.attention。所以这样使用:
{
"data": [
{
"id": 1,
"attention": 1
},
{
"id": 2,
"attention": 2
},
{
"id": 3,
"attention": 0
}
]
}
var att = data.map(function (data) {
return data.attention
});
console.log(att)
答案 4 :(得分:0)
var data = [
{
"id": 1,
"attention": 1
},
{
"id": 2,
"attention": 2
},
{
"id": 3,
"attention": 0
}
]
var att = data.map(data => {
console.log(data);
if (data.attention === 1) {
return '<span>✅</span>';
} else {
return 'Not Fount';
}
});
console.log(att);
答案 5 :(得分:0)
错误的解决方案
解决方案
需要改进的提示
const jsonData = {
"data": [{
"id": 1,
"attention": 1
},
{
"id": 2,
"attention": 1
},
{
"id": 3,
"attention": 0
}
]
}
const App = () => {
return ( <div>
{
jsonData.data.map(({attention}) => {
return (
<div>
{
attention ? <span>✅</span>
:
<span>❌</span>
}
</div>
)
})
}
</div>
)
}
ReactDOM.render(<App /> , document.getElementById('root'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root'></div>