【发布时间】:2021-10-04 11:56:00
【问题描述】:
我对 axios 和 react 很陌生。
我的目标是将数组的一半呈现在一列中,另一半呈现在第二列中。所以我可以分别设置每一列的样式。
我有一个 JSON 对象数组,我想将它们呈现到列中,例如 这个:
OmOss.js
const OmOss = () => {
return (
<ContentContainer>
<Column>
<Element></Element>
</Column>
<Column>
<Element></Element>
</Column>
</ContentContainer>
);
};
这是我对 axios 的 get 请求,它将数组中的所有对象作为单个组件返回。 但我不知道如何分离每个对象并单独渲染它们。
Element.js
export function Element() {
const url = "http://localhost:1337/om-osses";
const [result, setResult] = useState(null);
const [isLoading, setLoading] = useState(true);
useEffect(() => {
axios.get(url).then((response) => {
setResult(response.data);
setLoading(false);
});
}, []);
if (isLoading) {
return (
<ContentContainer>
<div> Loading... </div>
</ContentContainer>
);
}
return (
<TextContainer>
{result.map((text) => (
<div>
<Title text={text.Title} fontSize="2.3rem"></Title>
<p>{text.Content}</p>
</div>
))}
</TextContainer>
);
}
这是我尝试过的。
- 我尝试过像这样推送到数组
let data= [];
useEffect(() => {
axios.get(url).then((response) => {
setResult(response.data);
setLoading(false);
});
data.push(response.data);
}, []);
并像这样访问它:
<Title text={array[0].title} fontSize="2.3rem"></Title>
尽管 axios 请求成功通过,但数组元素未定义。
【问题讨论】:
-
您已经用响应更新了
result状态。那有什么问题呢? -
“分别渲染”到底是什么意思?
-
@RameshReddy 问题是我不希望整个数组显示两次,而 result.map 似乎会这样做。但我希望它的样式使数组的一半显示在一列中,另一半显示在另一列中。或第 1 列中的 array[0] & array[1] 和第 2 列中的 array[2] & [3]
-
你总是有两列吗?浏览我的答案
-
@RameshReddy 不一定,根据屏幕大小,我会删除其中一列。