Вызов ReactDOM.render
недействителен. См. Документы по render
. Удалите компонент Columns
.
Подпись: ReactDOM.render(element, container[, callback])
.
Ваш звонок должен быть: ReactDOM.render(<App/>,rootElement)
.
Изменить импорт на:
import React from "react";
import ReactDOM from "react-dom";
import { ButtonThemes, ButtonTypes, ButtonSizes } from "./buttonTypes";
import { IconTypes } from "./iconTypes";
import Button from "./Button";
import Columns from 'react-columns';
И ваш render
to:
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Похоже, вам не нужны ни Component
, ни App
. Сократите это до:
function App(){
var queries = [{
columns: 2,
query: 'min-width: 500px'
}, {
columns: 3,
query: 'min-width: 1000px'
}];
return (
<React.Fragment>
<div className="App">
<Columns queries={queries}>
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={() => alert("you clicked!")}
type={ButtonTypes.PRIMARY}
/>
<p>
this is a button
<p>
</Columns>
</div>
</React.Fragment>
);
}
Чтобы ответить на другой вопрос, анонимная функция - это функция без имени. Примером является ваш onClickHandler
onClickHandler={() => alert("you clicked!")
. Вы дали ему встроенную функцию, которая нигде не хранится, но повторно объявляется при каждом рендеринге.
Обычная функция:
onClickHandler () => {
alert('you clicked')
}
...
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={onClickHandler}
type={ButtonTypes.PRIMARY}
/>
где, как у вас, в анонимном:
<Button
size={ButtonSizes.MEDIUM}
label="Button"
onClickHandler={() => alert("you clicked!")}
type={ButtonTypes.PRIMARY}
/>
Нет ничего плохого в том, чтобы использовать его так, как он есть у вас. Вот что означает «анонимная» функция.