Javascript React Native-图表赢得';t在修改(添加)数据后正确重新渲染

Javascript React Native-图表赢得';t在修改(添加)数据后正确重新渲染,javascript,android,reactjs,react-native,Javascript,Android,Reactjs,React Native,我在使用Victory原生库创建图表时遇到问题(请访问文档) 我正在尝试创建一个动态图表。我将其数据存储在状态中,并希望在按下“获取数据”按钮后进行修改。然而,我遇到了一个问题,经过5个小时的尝试,我无法解决自己 我还是一个新的反应者,试图弄清楚到底发生了什么,所以代码可能看起来完全是胡言乱语 图表不会重新渲染线条,而是渲染线条,但会终止Y轴域 这是一个包含正确域的图表,它应该是这样的(当您向其提供静态数据时): 注意:此时,数据[5]仍然为空且不显示 一旦按下蓝色的“获取数据”按钮,它就会请

我在使用Victory原生库创建图表时遇到问题(请访问文档)

我正在尝试创建一个动态图表。我将其数据存储在状态中,并希望在按下“获取数据”按钮后进行修改。然而,我遇到了一个问题,经过5个小时的尝试,我无法解决自己

我还是一个新的反应者,试图弄清楚到底发生了什么,所以代码可能看起来完全是胡言乱语

图表不会重新渲染线条,而是渲染线条,但会终止Y轴域

这是一个包含正确域的图表,它应该是这样的(当您向其提供静态数据时):

注意:此时,数据[5]仍然为空且不显示

一旦按下蓝色的“获取数据”按钮,它就会请求返回并放入数据中的值[5]。但是,这将完全终止Y轴,而不是重新渲染线。我做错了什么?我希望这行代码能够正常地继续使用我在代码中设置的域

这是已经发生和不应该发生的事情:

如何使图表正确呈现新值?

代码:

import React,{Component}来自'React';
从“react native”导入{AppRegistry,View,Button,Text};
从“victory native”导入{VictoryChart、VictoryLine、VictoryTheme};
类testChart扩展组件{
建造师(道具){
超级(道具);
此.state={
数据:[
{数据:0,时间:0},
{数据:42,时间:1},
{数据:11,时报:2},
{数据:54,时报:3},
{数据:22,时报:4},
{data:null,times:null}
]
};
}
getDataBtn=()=>{
常数=this;
取('http://192.168.1.111/getData,然后(函数(响应){
让dataRsp=JSON.stringify(response.text());
设strData=dataRsp.substring(dataRsp.indexOf('Data:')、dataRsp.indexOf('.');
var numData=strData.replace(/^\D+/g',);//ekstrakcija stevilk iz stringa
state.data[5].data=numData;
即.state.data[5].times=5;
that.setState({data:that.state.data});
setState({text:JSON.stringify(that.state.data)});
});
}
render(){
返回(
this.getDataBtn()}/>
当前数据对象值:{JSON.stringify(this.state.DATA)}
);
}
}

注册表组件('test',()=>testChart)
我想这可能是因为
numData
字符串而不是
int
。尝试执行以下操作

that.state.data[5].data = parseInt(numData);

您不应按以下方式访问或修改状态:

that.state.data[5].data = numData;
that.state.data[5].times = 5;
如果希望存储此数据而不是状态,并且希望在所有类函数中都可以访问,则应使用私有变量,如
this.data=5

另一方面,在同一范围内调用setState将在React引发的特定错误中失败,该错误声明
存在正在进行的状态更改,您无法更改它。
等等

您可以使用
this.setState({data:[],text:'})
一种方法,也可以在第一个setState函数的回调中设置状态


希望有帮助

我的天啊。认真地这就解决了问题。答案就在我眼前。在我上传了截图后修复了它,因为它的工作原理与预期不完全一样。现在工作正常了,谢谢。:)