我现在正在从事React组件的工作,以前曾经在其中工作过,但是在涉及到它时,我仍然觉得自己很漂亮。
问题:我的setState正在刷新和更改this.state,但是我的组件根本没有重新渲染。我可以观看状态更改,甚至可以手动更改它,但是它仍然不会更改我的任何条件渲染。我正在尝试有条件地渲染ProcessingBox和JobsGrid,但是我什么都无法加载。
尝试:我试图对组件周围的所有日志进行控制台,甚至在函数中,我都获得了想要的正确输出,但不会重新加载组件。我也尝试过进行forceUpdate,但是仍然无法正常工作。 Aslo尝试使componentDidMount异步,但是没有运气。我的下一个理论与样式化组件有关,还有npm可能遗漏的某些东西。
import React, { Component } from 'react';
import { render } from 'react-dom';
import { JobsGrid, ProcessingBox, JobsContainer } from './styled';
class Employment extends Component {
state = {
categories: [],
jobs: [],
activeJob: {},
activeCategory: {},
processing: false
};
componentDidMount() {
this.getCategories();
}
getCategories = async () => {
this.setState({ processing: true });
await fetch('url', {
headers: {
Authorization: 'Bearer token',
}
}).then(res => res.json())
.then((result) => {
this.setState({ categories: result.data, processing: false });
});
};
isLoading = (processing) => {
console.log(processing);
if (processing) {
return (
<ProcessingBox>
<img src="/build/img/loading.GIF" alt="" />
</ProcessingBox>
)
} else {
return (
<JobsGrid>
<div className="container">
<div>Hi</div>
</div>
</JobsGrid>
)
}
};
render() {
return (
<JobsContainer>
{
this.isLoading(this.state.processing)
}
</JobsContainer>
);
}
}
const
element = document.querySelector('#employment');
if (element) {
render(
<Employment />,
element
);
}
答案 0 :(得分:0)
尝试以此更改您的getCategories函数,
getCategories = async () => {
this.setState({ processing: true });
const res = await fetch('url', { headers: { Authorization: 'Bearer token',} });
const result = await res.json();
this.setState({ categories: result.data, processing: false });
};
我认为您当时正在使用并且同时等待,等待用于等待诺言,看看它是否解决了您的问题,
希望有帮助
答案 1 :(得分:0)
您需要在抓取中添加.catch
getCategories = async () => {
this.setState({ processing: true });
await fetch('url', {
headers: {
Authorization: 'Bearer token',
}
})
.then(res => res.json())
.then((result) => {
this.setState({ categories: result.data, processing: false });
})
.catch(err){
this.setState({ categories: null, processing: false });
};
};
答案 2 :(得分:0)
解决方案:错误的依存关系导致DOM无法重新呈现。基本上我什至没有安装React。转到另一个已经安装了React并像魅力一样工作的项目,清理了一些代码并了解了很多有关babel的知识。从我的错误中学习?
答案 3 :(得分:-1)
我认为您的最后一部分应该更改,应该是 @echo off && setlocal EnableDelayedExpansion
(set "_str=0R/ecord\-# ',? 1>|<2Count>/3$4]C{^5_6&7}NUMBER = *|8!9"
for /f %%n in ('cmd /u /c echo="!_str!"^|find /v " "^|findstr [0-9]
')do set "_l=!_l!%%~n") && echo=Numbers in this variable _str: !_l!
,而不是 ReactDOM.render()
render()