Как выполнить функцию в React?

Я новичок в React, пожалуйста, может ли кто-нибудь помочь в этом Я написал эту функцию:

import React, {
Component }
from 'react';
import './Grid.css';
import test from "../product.json";
import $ from 'jquery';


class Grid extends Component {

makeGrid = () =>{

    var data = test.map( x => [ x.name, x.price, ] );

    $( document ).ready(function() {
    console.info( "ready!" );
    $('.boxes').append('<div className = "boxi"> Success </div>')

    });

Я хочу выполнить эту функцию, поэтому попробовал:

render() {


    return (
        <div className = "Grid" >
        < section className = "boxes" >

        < /section> < /div > );

        <h2> {this.makeGrid}</h2>

 }
}

export default Grid;

но ничего не происходит даже console.info не работает. Пожалуйста, кто-нибудь может мне помочь.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
61
2

Ответы 2

Я заметил две проблемы. Это не реакция. Это javaScript. this.makeGrid вызывает определение вашей функции, но не выполняет его. Для его выполнения потребуются открывающая и закрывающая скобки. Так что в основном

makeGrid = () =>{

}

а также

<h2> {this.makeGrid}</h2>

Должен отобразить строку функции. Тем не мение.

<h2> {this.makeGrid()}</h2>

Должен выполнять вашу функцию на JavaScript.

Вторая проблема, которую я подозреваю, makeGrid - это функция в классе. Это не обязательно распознается this как сам класс. Так

 <h2> {this.makeGrid.bind(this)}</h2>

Возможно, это правильный путь.

Обновлять

Переместите выполнение вашего метода на жизненный цикл componentDidMount реакции. так что добавьте это.

componentDidMount() {
  this.makeGrid()
}

удалить <h2> {this.makeGrid()}</h2> из метода рендеринга. Изучите componentDidMountЗдесь Вам не нужно вызывать свой метод в таком рендере. Вы не должны этого делать.

@MrabetIheb я заметил, что ваша функция ничего не возвращает. Что еще вы ожидаете отрисовки?

Nuru Salihu 28.05.2018 04:06

Я ожидаю, что консоль будет готова к печати и отобразить <div className = "boxi"> Success </div>, чтобы он отобразил Success

Mrabet Iheb 28.05.2018 04:08

@MrabetIheb, значит, в этом случае вы делаете это неправильно. Назовите это здесь, в reactjs.org/docs/react-component.html#componentdidmount. Прочтите об этом и, пожалуйста, удалите вызов из вашего метода рендеринга. / Переместите свой h2 в функцию

Nuru Salihu 28.05.2018 04:13

То, как вы добавляете материал, отличается от способа React. Не используйте jQuery для прямого управления DOM, сделайте это правильно в React.

Jayce444 28.05.2018 04:15

Вот и решение

import React, { Component } from 'react';
import './Grid.css';
import test from "../product.json";
import $ from 'jquery';


class Grid extends Component {

  constructor(props) {
    this.makeGrid = this.makeGrid.bind(this);
  }
 
  makeGrid = () => {
    var data = test.map( x => [ x.name, x.price, ] );
    console.info( "ready!" );
    $('.boxes').append('<div className = "boxi"> Success </div>')
  }

  render() {
    return (
      <div className = "Grid">
        <section className = "boxes">
        </section> 
      < /div >
      <h2>
        {this.makeGrid()}
      </h2>
  );     
 }
}

export default Grid;

Вам нужно привязать this к методу makeGrid.

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