return <button className={getShouldShowBtn() ? '' : 'is-hide'}>lioih </button>};
let counter = 0;
const Dirty = () => <div>{counter++}</div>;
Смотрите, ведь нет никаких Class, ведь это "синтаксический сахар" - в конце-то одно получается, что вызвать
function CC() {
React.Component.apply(this, arguments); // получаем props, refs, context, updater
}
CC.prototype = Object.create(React.Component.prototype); // получаем setState и forceUpdate
CC.prototype.componentDidMount = function() {
alert('hi');
}
CC.prototype.render = function() {
return React.createElement('div', null, 'I\'m CC');
}
И, естественно, получается, что в объекте при вызове метода render мы можем сравнивать что-то с предыдущим "чем-то" (состоянием, свойствами, ещё чем), а в случае чистой функции мы ничего подобного не имеем - правильно?
И получается, что оборачивая FC в Styled мы теряем все прелести FC - или нет?
<React.Fragment>
{/* ... */}
</React.Fragment>
import * as React from 'react';
React.createElement('div', null);
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
React.createElement('div', null);
"use strict";
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = __importStar(require("react"));
React.createElement('div', null);
import React from 'react';
React.createElement('div', null);
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
react_1.default.createElement('div', null);
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importDefault(require("react"));
react_1.default.createElement('div', null);
Дэн Абрамов как раз в ответе на подобный вопрос писал обратное.