当我尝试在React的useEffect
钩子中赋值变量时,我遇到了这个奇怪的错误。
未处理得拒绝(TypeError):无法读取未定义得属性“y”
下面是这个文件的代码,这是一个非常基本的文件:
import React, { useState, useEffect } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Typography from '@material-ui/core/Typography';
import Container from '@material-ui/core/Container';
import '../../node_modules/react-vis/dist/style.css';
import {XYPlot, LineSeries, VerticalGridLines,
HorizontalGridLines, XAxis, YAxis,
makeWidthFlexible, MarkSeries} from 'react-vis';
const useStyles = makeStyles((theme) => ({
root: {
maxWidth: '100%',
border: '2px solid black',
'border-radius': '10px'
},
graphDimensions: {
width:'100%'
}
}));
function StockChartCard(props){
const classes = useStyles();
const [strokeColor, setstrokeColor] = useState('red');
const [data, setdata] = useState([
{x: 0, y: 8},
{x: 1, y: 5},
{x: 2, y: 4},
{x: 3, y: 9},
{x: 4, y: 1},
{x: 5, y: 7},
{x: 6, y: 6},
{x: 7, y: 3},
{x: 8, y: 2},
{x: 9, y: 0},
{x: 10, y: 1},
{x: 11, y: 5},
{x: 12, y: 4},
{x: 13, y: 9},
{x: 14, y: 1},
{x: 15, y: 7},
{x: 16, y: 6},
{x: 17, y: 3},
{x: 18, y: 2},
{x: 19, y: 0},
{x: 20, y: 1}
]);
const [openBenchmarkData, setopenBenchmarkData] = useState([]);
useEffect(() => {
const getStockData = async () => {
console.log(data[0].y);
const openPrice = data[0].y;
const currentPrice = data[-1].y;
if(currentPrice < openPrice){
setstrokeColor('red')
}
else{
setstrokeColor('green')
}
let benchmarkSetData = [];
data.forEach(element => {
const xVal = element.x;
const dataPoint = {x: xVal, y: openPrice};
benchmarkSetData.push(dataPoint);
});
setopenBenchmarkData(...openBenchmarkData, benchmarkSetData);
}
getStockData();
}, [])
return (
<Container className={classes.root}>
{props.quoteTicker}
{data.length > 0 && openBenchmarkData.length > 0
? (
<XYPlot width={650} height={300}>
<LineSeries animation={'noWobble'} data={data} color={strokeColor} />
<LineSeries data={openBenchmarkData} strokeDasharray={[1,2]}/>
</XYPlot>
)
: null
}
</Container>
);
}
export default StockChartCard;
它说data[0]
和data[-1]
是未定义的
,但该print语句显示数组不是null
并且具有我设置的值。这不是一个状态问题,因为如果我将数据设置为文件中的常量,它仍然不起作用...任何帮助都是感激的,因为这个愚蠢的错误而精神崩溃。
我很确定-1不会给出数组的最后一个值,您可以做的是:
const currentPrice=data[data.length-1].y;
还可以抛出?
可选链接,以防止其不可用时未定义。
const currentPrice=data[data.length-1]?.y;
问题内容: 我正在通过教程学习reactjs并遇到此错误。那就是“无法读取未定义的属性’keys’”。我的代码非常少,因此我认为它与语言的结构有关。有谁知道这个问题和可能的解决方案? 问题答案: 编辑:奇怪的是,在我们上面的评论之后,我检查了一下它是否确实是babel核心版本,我在小提琴中使用了这个版本: 我在上面第二个切换到您的版本时得到以下信息: 使用not 并在括号中包裹多行html,如下所
运行此代码时,在的第一行出现错误 TypeError:无法读取未定义的属性“array” 代码: 我试着搜索,但没有得到正确的解。
问题内容: 运行此代码时,我在第一行出现错误 TypeError:无法读取未定义的属性“数组” 码: 我尝试搜索,但没有得到正确的解决方案。 问题答案: 道具类型现在是一个单独维护的库,名称为 这里是react- docs的解释:https : //reactjs.org/docs/typechecking-with- proptypes.html 您必须将它们导入为 NPM套餐
有人可以解释为什么我得到一个错误,当我使用此语法 但是当我使用箭头指针语法时没有错误,如下所示 注意:在这两种情况下,我都使用过 在 内。
问题内容: 我正在尝试在ReactJS中创建一个简单的TODO列表应用程序。我对React的基础知识不太清楚,所以我被困在这里。 生成每个列表后,将为其分配一个复选框。代码在没有onChange事件到Checkbox的情况下工作正常。但是,将“已检查”功能分配给它时,会产生错误。 未捕获的TypeError:无法读取未定义的属性“已检查” 提前致谢 问题答案: 您需要设置的(你可以做到这一点通过第
我基本上是React的初学者。我有一个仪表板页面,其中显示了一个React表。我有一个自定义按钮,它将打开一个弹出页面,这个弹出页面有一些复选框允许我显示/隐藏那些反应列。最初,此弹出页面中的所有复选框都设置为true。当我取消选中某列时,该列将被禁用。 这是我的父组件-父页面是带有ReactTable的页面,现在有10列,而不是像图中所示的8列。 这是我的子组件--在我的子页面(显示复选框的页面
我目前使用两个组件,并在这两个组件上实现了react Route。但是当我单击父组件viewall.js时,我无法从我的模拟json服务器api中获取值,这个错误显示: viewall.js