当我将数组转换为对象时,我发现了一个我无法解决的严重错误。当我们对数组使用map
方法时,它会返回一些东西但是对象没有返回任何内容。
let output = for(var key in taggedOnes) { <- this is not a good approach at all.
// But I'm looking for similar logic.
let item = taggedOnes[key];
...
if(id===this.state.selectedClothId) {
return ( <- I can't return it? :(
<View
key={id}
style={{
top,
left,
height: thumbSize,
width: thumbSize,
borderWidth: 2,
borderColor: 'yellow'
}}
/>
);
} else {
return (
<View
key={id}
style={{
top,
left,
height: thumbSize,
width: thumbSize,
borderWidth: 2,
borderColor: 'white'
}}
/>
);
}
}
return output; <- I want to return whole React Elements in one element like array.
答案 0 :(得分:1)
您可以使用Object.keys
获取包含taggedOnes
对象中键的数组。
然后,您可以在此阵列上调用Array.prototype.map
来浏览您的阵列并返回另一个阵列。
我不知道您在哪里创建id
变量,但您可以轻松调整以下示例:
const output = Object.keys(taggedOnes).map(key => {
const item = taggedOnes[key];
if (id === this.state.selectedClothId) {
return (
<View
key={id}
style={{
top,
left,
height: thumbSize,
width: thumbSize,
borderWidth: 2,
borderColor: 'yellow'
}}
/>
);
} else {
return (
<View
key={id}
style={{
top,
left,
height: thumbSize,
width: thumbSize,
borderWidth: 2,
borderColor: 'white'
}}
/>
);
}
}
});
答案 1 :(得分:0)
您需要的是Object.keys(taggedOnes).map
。 for循环不会返回任何只是循环遍历值的东西,for循环中的return语句将返回当前函数。
Map使用提供的函数转换数组的每个元素,在这种情况下,它将/它转换为反应组件列表。
答案 2 :(得分:0)
您可以使用Object.keys(taggedOnes).map
将taggedOnes
对象转换为其转换值的数组。
let output = Object.keys(taggedOnes).map(key => {
let item = taggedOnes[key];
...
if (id===this.state.selectedClothId) {
return ...
} else {
return ...
}
});