reactjs - 状态如何用于反应
问题描述
我正在尝试查看我在 GitHub 上找到的一个封面跟踪器项目,以了解如何在有用的应用程序中使用 react。这是我在项目开始时找到的以下代码,有人可以解释一下它的含义吗?如果这是一个模糊的问题,我深表歉意。
对于上下文,该应用程序列出了所有国家及其当前的 covid 病例,并可选择搜索特定国家
const GlobalList = () => {
const state = useContext(AppContext);
const { summaryData } = state;
const [countriesSwitch, setCountriesSwitch] = useState("a");
const countries = summaryData.Countries;
const RenderedCountries = () => {
switch (countriesSwitch) {
case "ascendingConfirmedCases":
return countries
.sort((a, b) => (a.TotalConfirmed < b.TotalConfirmed ? 1 : -1))
.map((i, k) => {
return (
<Grid.Column key={k}>
<CounrtyItem
country={correctedNames(i.Country)}
countryCode={i.CountryCode.toLowerCase()}
totalConfirmed={addComma(i.TotalConfirmed)}
totalRecovered={addComma(i.TotalRecovered)}
totalDeaths={addComma(i.TotalDeaths)}
/>
</Grid.Column>
解决方案
const state = useContext(AppContext);
解释 :
在此处的第一行中,使用了一个名为 useContext 的钩子。useContext 钩子用于从组件树上最近的值获取上下文值。所以在父组件的某个地方有一个名为的上下文AppContext
,它被传递给子组件,而我们当前的组件就是其中一个子组件。
-------------哦------
const { summaryData } = state;
解释
在这一行中,我们使用 es6 ```spread operator```` 从状态变量中提取 susmmaryData 的值。
---------------O-----------------
const [countriesSwitch, setCountriesSwitch] = useState("a");
解释
在这一行中,我们维护一个状态变量来使用useState
hook 切换国家状态。该钩子用于维护 React 组件中的本地状态。
---------------O-----------------
const countries = summaryData.Countries;
这是标准的 JavaScript。没什么好解释的
---------------O-----------------
switch (countriesSwitch) {
case "ascendingConfirmedCases":
return countries
.sort((a, b) => (a.TotalConfirmed < b.TotalConfirmed ? 1 : -1))
.map((i, k) => {
return (
<Grid.Column key={k}>
<CounrtyItem
country={correctedNames(i.Country)}
countryCode={i.CountryCode.toLowerCase()}
totalConfirmed={addComma(i.TotalConfirmed)}
totalRecovered={addComma(i.TotalRecovered)}
totalDeaths={addComma(i.TotalDeaths)}
/>
</Grid.Column>
解释
countriesSwitch
如前所述,在此 switch 语句中,我们根据其值呈现组件,该值保持在本地状态。
推荐阅读
- cron - 运行 crontab 作业时的非法访问
- git - 如何确保开发人员在存储库迁移后使用新的 git remote
- salesforce - 无法从 VALUE_STRING 值 1,9459.1650 反序列化货币实例,或者请求可能缺少必填字段
- ruby-on-rails - 在 Rails 中使用 rswag - 索引响应(数组)的语法是什么?
- java - Maven 命令行按名称从远程存储库列表中排除下载
- java - Hibernate 在数据库中插入额外的记录
- python - 分类到序数转换,我应该使用什么值?
- reactjs - this.setState 直到函数调用两次才更新状态
- arrays - 使用 numpy 将某些行添加到数组
- javascript - jsonwebtoken, jwt 在提供无效令牌时使我的应用程序崩溃,即使 errorHandler 中间件捕获了错误