JSON 对象上的映射函数在 React JS 中不起作用
Map fuction on JSON object not working in ReactJS
我正在使用 react with typescript。我有一个外部 JSON 文件,我从中获取数据以在我的前端创建元素。我也有一个按钮,当用户启用该按钮时,只有元素应该创建,否则什么都不做,但我的地图功能不起作用。
这是我的代码:
import Button from '../Button/Button';
import { useState } from 'react';
import Box from './Box';
const jsonObj = require("./Helpers/dataList.json");
type JsonData = {
index: number,
x: number,
y: number,
width: number,
height: number,
}
type JData = {
index: number,
indexData: JsonData[]
}
const updateIndex = () => {
let cIndex: number = ...;
setCurrentIndex(cIndex);
}
}
const Test = () => {
const [currentIndex, setCurrentIndex] = useState(0);
const [boxFlag, setBoxFlag] = useState(false);
const [boxText, setBoxText] = useState("Show Box");
const showBoxes = () => {
if(!boxFlag){
setBoxText("Disable Box");
}
else{
setBoxText("Show Box");
}
setBoxFlag(!boxFlag);
}
return <div className='container'>
<div>
{boxFlag &&
jsonObj.map((x: JData) => {
if(currentIndex === x.index){
x.indexData.map((y: IData) => {
<Box x={y.x} y={y.y} height={y.height} width={y.width}/>
})
}
})
}
</div>
<Button name={boxText} onClick={showBoxes}/>
</div>;
};
export default Test;
和我的 JSON 文件:
[
{ "index": 8, "x": 1141, "y": 582, "width": 238, "height": 268 },
{ "index": 8, "x": 265, "y": 572, "width": 291, "height": 317},
{ "index": 8, "x": 1665, "y": 491, "width": 266, "height": 323 }
]
尝试像这样编辑显示 Box
es 的代码:
{boxFlag &&
jsonObj.filter((x: JData) => currentIndex === x.index).map((y: IData) => {
return <Box key={`${y.x},${y.y}`} x={y.x} y={y.y} height={y.height} width={y.width}/>
})
}
请注意,我已将 key
属性添加到每个 Box
(它必须是唯一的)。
我正在使用 react with typescript。我有一个外部 JSON 文件,我从中获取数据以在我的前端创建元素。我也有一个按钮,当用户启用该按钮时,只有元素应该创建,否则什么都不做,但我的地图功能不起作用。
这是我的代码:
import Button from '../Button/Button';
import { useState } from 'react';
import Box from './Box';
const jsonObj = require("./Helpers/dataList.json");
type JsonData = {
index: number,
x: number,
y: number,
width: number,
height: number,
}
type JData = {
index: number,
indexData: JsonData[]
}
const updateIndex = () => {
let cIndex: number = ...;
setCurrentIndex(cIndex);
}
}
const Test = () => {
const [currentIndex, setCurrentIndex] = useState(0);
const [boxFlag, setBoxFlag] = useState(false);
const [boxText, setBoxText] = useState("Show Box");
const showBoxes = () => {
if(!boxFlag){
setBoxText("Disable Box");
}
else{
setBoxText("Show Box");
}
setBoxFlag(!boxFlag);
}
return <div className='container'>
<div>
{boxFlag &&
jsonObj.map((x: JData) => {
if(currentIndex === x.index){
x.indexData.map((y: IData) => {
<Box x={y.x} y={y.y} height={y.height} width={y.width}/>
})
}
})
}
</div>
<Button name={boxText} onClick={showBoxes}/>
</div>;
};
export default Test;
和我的 JSON 文件:
[
{ "index": 8, "x": 1141, "y": 582, "width": 238, "height": 268 },
{ "index": 8, "x": 265, "y": 572, "width": 291, "height": 317},
{ "index": 8, "x": 1665, "y": 491, "width": 266, "height": 323 }
]
尝试像这样编辑显示 Box
es 的代码:
{boxFlag &&
jsonObj.filter((x: JData) => currentIndex === x.index).map((y: IData) => {
return <Box key={`${y.x},${y.y}`} x={y.x} y={y.y} height={y.height} width={y.width}/>
})
}
请注意,我已将 key
属性添加到每个 Box
(它必须是唯一的)。