Reactjs 如何将状态中的值添加到对象中
我有一个叫做jiraTicketChartData的对象。数据集具有具有硬编码值的数据键。我想用状态变量(jiraticketsData)数据替换那些硬编码的值。我想用这些数字访问饼图值 下面是如何使用状态数据Reactjs 如何将状态中的值添加到对象中,reactjs,Reactjs,我有一个叫做jiraTicketChartData的对象。数据集具有具有硬编码值的数据键。我想用状态变量(jiraticketsData)数据替换那些硬编码的值。我想用这些数字访问饼图值 下面是如何使用状态数据 const缺陷=()=>{ 常量加载=使用上下文(加载上下文) const snackbar=useContext(SnackbarContext) const user=useContext(UserContext) const[jiraticketsData,setJiraTick
const缺陷=()=>{
常量加载=使用上下文(加载上下文)
const snackbar=useContext(SnackbarContext)
const user=useContext(UserContext)
const[jiraticketsData,setJiraTicketsData]=useState(null)
useffect(()=>{
异步函数onLoadJiraTicketData(){
加载。设置加载(true)
const results=wait get(`get\u jira\u tickets`,user.user)
如果(results.status==0){
setJiraTicketsData(results.data)
}否则如果(results.status>=20&&results.status{
异步函数onLoadJiraTicketData(){
加载。设置加载(true)
const results=wait get(`get\u jira\u tickets`,user.user)
如果(results.status==0){
setJiraTicketsData(results.data)
}否则如果(results.status>=20&&results.status{
jiraTicketChartData.datasets[0]。数据=对象。值(jiraticketsData.pie_图表);
},[jiraticketsData]);
常数jiraTicketChartData={
标签:[“积压”、“进行中”、“审查中”
],
数据集:[
{
背景颜色:[
“蓝色”,
“橙色”,
“绿色”
],
数据:jiraticketsData.pie_图表
}
]
}
更新错误:
饼图是一个对象,因此您必须访问类似对象,因此:
在useffect if语句中,请尝试:
if(results.status==0){
setJiraTicketsData(results.data);
jiraTicketChartData.datasets[0]。数据=对象。值(结果。数据。饼图);
}
或者,您可以为此设置另一个useEffect钩子,但随后您将引入另一个重新渲染的东西以保持关注,如下所示
useffect(()=>{
jiraTicketChartData.datasets[0]。数据=对象。值(jiraticketsData.pie_图表);
},[jiraticketsData]);
似乎不起作用,我也只是更新了代码,以显示在开发工具中传递了哪些道具如果这更有帮助的话,您希望保存什么样的数据类型jiraticketsData
?如果是数组,将初始状态设置为[]
而不是null
数组,谢谢,我将检查您的以上答案。数据键值是否为data:jiraticketsData.pie_chart[0]?什么是jiraticketsData.piechart
数组?尝试jiraTicketChartData.datasets[0].data=jiraticketsData.pie_chart
请不要通过破坏您的帖子来为他人做更多的工作。通过在Stack Exchange(SE)网络上发布,您已经在下授予了SE分发内容的不可撤销的权利(无论您将来的选择如何)。根据SE策略,将分发非破坏性版本。因此,任何此类破坏性编辑都将被还原。有关删除此网站内容的详细信息,请参阅。
const defects = () => {
const loading = useContext(LoadingContext)
const snackbar = useContext(SnackbarContext)
const user = useContext(UserContext)
const [jiraticketsData, setJiraTicketsData] = useState(null)
useEffect(() => {
async function onLoadJiraTicketData() {
loading.setLoading(true)
const results = await get(`get_jira_tickets`, user.user)
if (results.status === 0) {
setJiraTicketsData(results.data)
} else if (results.status >=20 && results.status <=30){
snackbar.statusCheck(results)
user.setSessionTokenMatches(false)
} else snackbar.statusCheck(results)
loading.setLoading(false)
}
onLoadJiraTicketData()
}, [])
const jiraTicketChartData = {
labels: ['backlog', 'in progress', 'in review'
],
datasets: [
{
backgroundColor: [
'blue',
'orange',
'green'
],
data: [1,3,3], ***This data should be replaces jiraticketsData.piechart values***
}
]
}
return (!jiraticketsData ? null :
<PageWrapper title={'Jira Tickets'}>
<div className="jiraTicketChartContainer" >
<Pie
data={jiraTicketChartData}
options={{
title:{
display:true,
text:'Open Issues by priority',
position: 'top',
fontSize:20
},
legend:{
display:true,
position:'left'
}
}}
/>
</div>
</PageWrapper>
)
}
export default defects
useEffect(() => {
async function onLoadJiraTicketData() {
loading.setLoading(true)
const results = await get(`get_jira_tickets`, user.user)
if (results.status === 0) {
setJiraTicketsData(results.data)
} else if (results.status >=20 && results.status <=30){
snackbar.statusCheck(results)
user.setSessionTokenMatches(false)
} else snackbar.statusCheck(results)
loading.setLoading(false)
}
onLoadJiraTicketData()
}, [])
useEffect(() => {
jiraTicketChartData.datasets[0].data = Object.values(jiraticketsData.pie_chart);
}, [jiraticketsData]);
const jiraTicketChartData = {
labels: ['backlog', 'in progress', 'in review'
],
datasets: [
{
backgroundColor: [
'blue',
'orange',
'green'
],
data: jiraticketsData.pie_chart
}
]
}