【问题标题】:how to add href link with parameters fetched using api in react?如何在反应中添加带有使用api获取的参数的href链接?
【发布时间】:2020-12-16 21:36:30
【问题描述】:

我有一个使用react 的前端。我想使用从 API 获取的数据中提取的参数在地图之后添加一个链接到调查页面。我有两个问题:

  • 不知道怎么给链接加参数

  • 函数映射后无法添加链接会报错。

这是我的代码:

    export default function Dashboard() {
    const [students, setstudents] = useState([]);
     useEffect(() => {
     const fetchStudents = async () => {
     try {
    const resp = await Axios({
      method: "GET",
      url: "http://localhost:3001//student/courses",
      headers: {
        "Content-Type": "application/json",
      },
    });
    setstudents(resp.data);
  } catch (err) {}
  };
  fetchStudents();
      }, []);
  const classes = useStyles();
  return (
  <GridContainer>
  <GridItem xs={12} sm={6} md={3}>
    <Card>
      <CardHeader color="warning" stats icon>
        <CardIcon color="warning">
          <Icon>content_copy</Icon>
        </CardIcon>
        <p className={classes.cardCategory}>Completed surveys</p>
        <h3 className={classes.cardTitle}>{students.toatl_voted}/{students.total_courses}</h3>
      </CardHeader>
    </Card>
  </GridItem>
  <GridItem xs={12} sm={12} md={12}>
    <Card>
      <CardHeader color="primary">
        <h4 className={classes.cardTitleWhite}>Available Surveys</h4>
        <p className={classes.cardCategoryWhite}>
          Here is the remaining courses surveys to submit
        </p>
      </CardHeader>
      <CardBody>
        <Table
          tableHeaderColor="primary"
          tableHead={["Course Code", "Course Name", "Survey Link"]}
          tableData={students && students.map((student) => [student.surveys.Course_code, 
          student.survey.Course_name])}


        //href link should be added here as follow api: url/student/course/:sectionId/:departmentId it must be clickeable


        />
      </CardBody>
    </Card>
  </GridItem>
   </GridContainer>
   );
     }

【问题讨论】:

  • 你用什么作为 ui 库?
  • 所以你是说 fetch 返回 sectionId 和 departmentId?

标签: javascript node.js reactjs express web


【解决方案1】:

这个问题似乎缺少很多信息。但我将建议以下作为解决此问题的起点。假设 1:&lt;Table /&gt;tableData 属性接受 React.ReactNode 属性类型。任何 React UI 都应该能够渲染一个基本的 ReactNode。如果没有,请选择不同的&lt;Table /&gt; API。以下示例中的 href 模板参数是模拟 student 属性。

...
const getTableData = students => {
    if(!Array.isArray(students) || !students.length){
        return null;
    }
    return students.map( student => [
        student.surveys.Course_code, 
        student.survey.Course_name,
        (<a href={`url/student/course/${student.sectionId}/${student.departmentId}`}>
             Department# {student.departmentId}
         </a>
        )
    ]);
};
<GridContainer>
    ...
    <Table
        tableData={getTableData(students)}
        tableHead={["Course Code", "Course Name", "Survey Link"]}
        tableHeaderColor="primary"
    />
    ...
</GridContainer>
...

【讨论】:

    猜你喜欢
    • 2020-03-05
    • 2018-04-15
    • 2013-04-30
    • 2020-04-07
    • 2021-11-17
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多