Как преобразовать этот конструктор ES6 в класический JS? Вручную без Babel?
У меня есть большой код, весь на ES6, с помощью Babel преобразовал все кроме этой части. Babel выдал код аж из 42 строк...Babel выдает больше продакшн код, чем для разработки...
Как преобразовать этот конструктор ES6 в класический JS? Помогите вручную преобразовать. constructor() { super(); this.state = { size: '', sort: '', cartItems: [], products: [], filteredProducts: [] }; } |
У вас ошибка... возможно как-то так...
class MyClass extends React.Component { constructor() { super(); this.state = { size: '', sort: '', cartItems: [], products: [], filteredProducts: [] }; } render() { return React.createElement("p", {}, "(Empty)"); } } Как вы умудрились потерять исходный код? Цитата:
Цитата:
Цитата:
|
Понимаешь я знаю только класический JS:
Тоесть привык что конструктор можно записать таким образом: function Animal(name) { this.name = name; this.canWalk = true; } var animal = new Animal("ёжик"); или так: var animal = new function() { this.name = "Васька"; this.canWalk = true; }; а вот это меня напрягает: слово "constructor" ведь для создания конструктора достаточно c большой букви написать и потом обратиться через new и слово "super" Мне нужно как-то передалать, потому что б было вот так примерно: function Animal(name) { this.name = name; this.canWalk = true; } var animal = new Animal("ёжик"); А вот весь код : https://jsfiddle.net/nathan111777/01detqw2/4/ |
constructor так и так остаётся... Вот для примера код...
<script> class Person { constructor(name, age) { this.name = name; this.age = age; } say(message) { return this.name + " says: '" + message + "'"; } } class Cat extends Person { constructor(name, age, breed) { super("Cat " + name, age); this.breed = breed; } say(message) { return super.say("Meow! " + message); } } const cat = new Cat("Vector", 4, "Maine Coon"); alert(cat.say("Hello!")); </script> Вот этот же самый пример без специального синтаксиса классов... Согласитесь, специальный синтаксис упрощает написание кода... <script> function Person(name, age) { this.name = name; this.age = age; } Person.prototype = { constructor: Person, say(message) { return this.name + " says: '" + message + "'"; } }; function Cat(name, age, breed) { this.__proto__.__proto__.constructor.call(this, "Cat " + name, age); this.breed = breed; } Cat.prototype = { __proto__: Person.prototype, constructor: Cat, say(message) { return this.__proto__.__proto__.say.call(this, "Meow! " + message); } }; const cat = new Cat("Vector", 4, "Maine Coon"); alert(cat.say("Hello!")); </script> А код, который вы показали он не является стандартным... там, как я и предвидел используется JSX... Вы можете перевести метод render в ES2019... render() { return React.createElement( "div", { className: "container" }, React.createElement("h1", null, "E-commerce Shopping Cart Application"), React.createElement("hr", null), React.createElement( "div", { className: "row" }, React.createElement( "div", { className: "col-md-9" }, React.createElement(Filter, { count: this.state.filteredProducts.length, handleSortChange: this.handleSortChange, handleSizeChange: this.handleSizeChange }), React.createElement("hr", null), React.createElement(Products, { products: this.state.filteredProducts, handleAddToCart: this.handleAddToCart }) ), React.createElement( "div", { className: "col-md-3" }, React.createElement(Basket, { cartItems: this.state.cartItems, handleRemoveFromCart: this.handleRemoveFromCart }) ) ) ); } |
Часовой пояс GMT +3, время: 03:55. |