Как добавить строку к URL-адресу API по клику в React js

Я хотел бы добавить строку ко всем URL-адресам, когда я нажимаю кнопку, как это сделать?

Вот код App.js

import React, { Component } from "react";
import Button from './Button';

let API = 'https://someurl.com/';

class App extends Component {
  constructor(props) {
    super(props);

    this.state = {
      results: []
    };
    this.updateUrl = this.updateUrl.bind(this);
  }

  componentWillMount = () => {
    this.fetchData();
  }

  fetchData = async () => {
    const response = await fetch(API);
    const json = await response.json();
    this.setState({ 
      results: json.results 
    });
  };


  updateButton = (event) => {
     this.setState({ 
      API.concat('?format=fzjeozfij')
    });
  }

  render() {
    return (
      <div>
        <Button data = {this.state} />
      </div>
    );
  }
}

export default App;

Кнопка.js

import React, { Component } from 'react';

class Button extends Component {
  render() {
    const updateButton = this.props.data;
    return (
      <button type = "button" onClick = {updateButton}>Button</button>
    )
  }
}

export default Button;

Моя цель - получить URL-адрес от const API до https://someurl.com/?format=zegizhgz Я думаю, что мне нужно изменить функцию fetchData, чтобы объединить некоторую строку с URL-адресом, но я не уверен, как это сделать.

это то, чего ты хочешь ? постоянный ответ = ожидание выборки (${API}?format=fzjeozfij);

Mahmoud-Abdelslam 07.04.2019 22:24

Я хочу, чтобы '?format=blabla' добавлялся, когда я запускаю функцию updateButton, нажимая на кнопку

Matt355 07.04.2019 22:27

не могли бы вы попробовать следующее updateButton = (event) => { const api= ${API}?format=fzjeozfij` this.setState({api}); }`

Mahmoud-Abdelslam 07.04.2019 22:30

у меня выдает ошибку Syntax error: src/component/App.js: Unexpected token, expected ; (50:16)

Matt355 07.04.2019 22:33

и в данных выборки прочитайте состояние следующим образом: await fetch(this.state.api);

Mahmoud-Abdelslam 07.04.2019 22:33
updateButton = (event) => { const api= ${API}'?format=wookiee'; this.setState({ api }); } Я все еще получаю неожиданный токен, я неправильно написал?
Matt355 07.04.2019 22:42

я использую обратные кавычки, которые `не'

Mahmoud-Abdelslam 07.04.2019 22:44

напишите это следующим образом: const api= `${API}?format=wookiee`

Mahmoud-Abdelslam 07.04.2019 22:44

все та же ошибка

Matt355 07.04.2019 22:45

я напишу код ответа, чтобы я мог его хорошо показать

Mahmoud-Abdelslam 07.04.2019 22:48

это ошибка компиляции или ошибка времени выполнения?

Mahmoud-Abdelslam 07.04.2019 22:51

во время выполнения, я думаю, он появляется как при загрузке, так и при нажатии на кнопку, но приложение все еще отображается

Matt355 07.04.2019 22:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
12
2 204
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  updateButton = () => {
  const nApi = `${this.state.api}?format=wookiee`;
this.setState({ api: nApi });

  this.fetchData(nApi);
      }
    render() {
        return (
          <div>
            <Button onClick = {this.updateButton}/>
          </div>
        );
      }

     fetchData = async (api) => {
        const response = await fetch(api);
        const json = await response.json();
        this.setState({ 
          results: json.results 
        });
      };

Кнопка.jsx

import React, { Component } from 'react';

class Button extends Component {
  render() {
    const {onClick} = this.props;
    return (
      <button type = "button" onClick = {onClick}>Button</button>
    )
  }
}

Я получаю эту ошибку: Uncaught Invariant Violation: ожидается, что слушатель onClick будет функцией, вместо этого получил значение типа object.

Matt355 07.04.2019 22:52

Я загрузил свой текущий код здесь jsfiddle.net/yqL9r4zt Нет ошибок, но нет повторной обработки данных

Matt355 08.04.2019 19:41

@ Matt355 Matt355, пожалуйста, взгляните на этот stackblitz.com/edit/react-vonflf, я сделал несколько замечаний по коду и удалил тег списка, так как у меня нет его файла, теперь он отображает кнопку в представлении.

Mahmoud-Abdelslam 08.04.2019 21:17

Большое спасибо за ответ, у меня ошибка Unexpected token w in JSON at fetchData = async (api) => {

Matt355 09.04.2019 19:15

Хорошо, json, на который я нацеливаюсь, имеет ошибку синтаксического анализа, поэтому он работает (в некотором смысле), спасибо.

Matt355 09.04.2019 19:32

Другие вопросы по теме