首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在react js中刷新组件

如何在react js中刷新组件
EN

Stack Overflow用户
提问于 2020-05-16 18:00:41
回答 2查看 2.4K关注 0票数 0

我使用React js,在App.js文件中有一个名为Persons的变量。我希望每次单击该按钮时都会更新Persons值。

代码语言:javascript
运行
复制
import React from "react";
import "./styles.css";
import Button from "@material-ui/core/Button";
import EleventHeaderCard from "./ElevatedHeaderCard";
import axios from "axios";

export let persons = [
  {
    id: 9,
    email: "michael.lawson@reqres.in",
    first_name: "Michael",
    last_name: "Lawson",
    avatar: "https://s3.amazonaws.com/uifaces/faces/twitter/follettkyle/128.jpg"
  },
  {
    id: 10,
    email: "lindsay.ferguson@reqres.in",
    first_name: "Lindsay",
    last_name: "Ferguson",
    avatar: "https://s3.amazonaws.com/uifaces/faces/twitter/araa3185/128.jpg"
  }
];

const handleClick = () => {
  return axios.get(`https://reqres.in/api/users?page=2`).then(res => {
    persons = res.data.data;
    console.log(persons);
  });
};

export default function App() {
  return (
    <div className="App">
      <Button color="primary" type="Submit" onClick={handleClick}>
        click me !!!
      </Button>
      <EleventHeaderCard />
    </div>
  );
}

在这里你可以看到我的codesandbox

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-16 18:22:14

用于将数据传递到subComponent的逻辑是错误的,您必须在subComponent中将其作为props而不是import传递

此外,为了重新呈现每个请求,您必须使用setter挂钩,它返回一个yourValue数组及其useState方法

所以在app函数内部使用

代码语言:javascript
运行
复制
let [persons, setPersons] = useState(initialData);

然后在axios结果集中使用setPersons函数的人员

在你的EleventHeaderCard组件中传递这个人作为道具。

查看此working pen

票数 2
EN

Stack Overflow用户

发布于 2020-05-16 18:23:37

使用useState hook。它将在更改时重新呈现组件。

代码语言:javascript
运行
复制
const initialValue = [
{
  id: 9,
  email: "michael.lawson@reqres.in",
  first_name: "Michael",
  last_name: "Lawson",
  avatar: "https://s3.amazonaws.com/uifaces/faces/twitter/follettkyle/128.jpg"
},
{
  id: 10,
  email: "lindsay.ferguson@reqres.in",
  first_name: "Lindsay",
  last_name: "Ferguson",
  avatar: "https://s3.amazonaws.com/uifaces/faces/twitter/araa3185/128.jpg"
}
];

export default function App() {
  const [people, setPeople] = useState(initialValue);

  const handleClick = () => {
    return axios.get(`https://reqres.in/api/users?page=2`).then(res => {
      setPeople(res.data.data);
    });
  };

  return (
    <div className="App">
      <Button color="primary" type="Submit" onClick={handleClick}>
      click me !!!
    </Button>
    <EleventHeaderCard />
  </div>
  );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61835015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档