Могут ли React Hooks иметь методы? - PullRequest
2 голосов
/ 08 октября 2019

Как написать функцию React Hooks для экспорта методов в export default?

Я нигде не вижу примеров, поэтому подозреваю, что React Hooks не работают таким образом, но .. Мне любопытно, можно ли расширить функцию ловушки для экспорта дочерних методов.


Checkout.js:

import React from "react";

function Checkout() {
  return <section className="checkout"></section>;
}

// Add Item Method
Checkout.addItemPrice = (item, price) => {
  console.log("this is a method");
};

export default Checkout;

Checkout.test.js:

import React from "react";
import ReactDOM from "react-dom";
import Checkout from "./Checkout";

describe("Checkout Test Suite", () => {
    it("Can add an item", () => {
        var checkout = new Checkout();
        checkout.addItemPrice('a', 1);
    });
});

TypeError: checkout.addItemPrice не является функцией

Я не смог найтиспособ написать это в Hooks, но в конце дня я разделил их на 2 функции, с 2 экспортом и 2 импортом.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Ничего общего с крючками. Если вы хотите, чтобы у вашего экземпляра new Checkout() был метод addItemPrice, вы должны добавить его в прототип:

Checkout.prototype.addItemPrice = (item, price) => {
0 голосов
/ 09 октября 2019

При выполнении:

var checkout = new Checkout();

объект типа reactComponent возвращается в переменную checkout независимо от того, используется ключевое слово New или нет. У этого объекта нет метода, который вы пытаетесь вызвать. Вы можете попытаться определить свой метод, используя цепочку prorotype этого объекта (ofactComponent), но этот объект может быть защищен от любых изменений.

Даже если вам удастся установить метод на reactComponet,это нехорошо и, конечно, не является способом Реактивности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...