小编Peo*_*ray的帖子

如何在 Context API 中传递路由参数

我正在使用上下文 API,并且我的上下文文件中有以下内容:

useEffect(() => {
    async function getSingleCountryData() {
      const result = await axios(
        `https://restcountries.eu/rest/v2/alpha/${props.match.alpha3Code.toLowerCase()}`
      );
      console.log(result)
      setCountry(result.data);
    }
    if (props.match) getSingleCountryData();
  }, [props.match]);
Run Code Online (Sandbox Code Playgroud)

在我正在使用的组件中,它不起作用,因为它不知道 props.match.alpha3Code 是什么。我怎样才能传递这个值?alpha3Code来自URL:alpha3Code在localhost:3000/country/asa哪里,我怎样才能得到这个值?asa

基本上,我想做的是。我在主页上列出了一个国家/地区列表。现在我正在尝试获取有关单个国家/地区的更多信息。路线是从 API 获取的/country/:alpha3Code位置。alpha3Code

FWIW,这是我的完整上下文文件:

import React, { useState, createContext, useEffect } from 'react';
import axios from 'axios';

export const CountryContext = createContext();

export default function CountryContextProvider(props) {
  const [countries, setCountries] = useState([]);
  const [country, setCountry] = useState([]);

  useEffect(() => {
    const getCountryData = async () => { …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router react-hooks

4
推荐指数
1
解决办法
9311
查看次数

Vuejs - 如何使用单个表单进行添加和编辑

我正在尝试使用相同的组件来处理我的应用程序的添加和编辑部分。我正在使用 Firebase,所以我正在检查id路由参数中是否有一个,如果有,它呈现为编辑表单,如果没有,呈现为添加表单。但这不起作用,它有一些奇怪的行为。

这是ContactForm组件的代码

<template>
  <div>
    <div class="card mb-3">
      <div class="card-header">{{ editing ? 'Edit' : 'Add' }} Contact</div>
      <div class="card-body">
        <form @submit.prevent="addContact">
          <TextInputGroup
            label="Name"
            name="name"
            placeholder="Enter your name..."
            v-model="contact.name"
            for="name"
          />
          <TextInputGroup
            type="email"
            label="Email"
            name="email"
            placeholder="Enter your email..."
            v-model="contact.email"
          />
          <TextInputGroup
            type="phone"
            label="Phone"
            name="phone"
            placeholder="Enter your phone number..."
            v-model="contact.phone"
          />

          <input type="submit" value="Add Contact" class="btn btn-block btn-light" />
        </form>
      </div>
    </div>
  </div>
</template>

<script>
import TextInputGroup from "../layout/TextInputGroup";
import { db } from "../../firebase";

export default { …
Run Code Online (Sandbox Code Playgroud)

javascript firebase vue.js vue-router google-cloud-firestore

3
推荐指数
1
解决办法
5041
查看次数