import React.Component from 'react'import [ Component ] from 'react'import Component from 'react'import { Component } from 'react'React.memo.useReducer.useMemo.shouldComponentUpdate.const person =(firstName, lastName) =>
{
first: firstName,
last: lastName
}
console.log(person("Jill", "Wilson"))
import React, {useState} from 'react';
const name = 'Rachel';
const age = 31;
const person = { name, age };
console.log(person);
{name: "Rachel", age: 31}{person: "Rachel", person: 31}}{person: {name: "Rachel", age: 31}}const topics = ['cooking', 'art', 'history'];
const first = ["cooking", "art", "history"]const [] = ["cooking", "art", "history"]const [, first]["cooking", "art", "history"]const [first] = ["cooking", "art", "history"]const [, , animal] = ['Horse', 'Mouse', 'Cat'];
console.log(animal);
<Message {...props} />
<Route path="/:id" />
function Dish() {
return <h1>Mac and Cheese</h1>;
}
ReactDOM.render(<Dish />, document.getElementById('root'));
divh1React.createElement('h1', null, "What's happening?");
<h1 props={null}>What's happening?</h1><h1>What's happening?</h1><h1 id="component">What's happening?</h1><h1 id="element">What's happening?</h1>function MyComponent() {
return (
<Suspense>
<div>
<Message />
</div>
</Suspense>
);
}
const message = 'Hi there';
const element = <p>{message}</p>;
React.memoReact.splitReact.lazyReact.fallbackuseLayoutEffect?Джерело “useLayoutEffect — це версія useEffect, яка викликається перед тим, як браузер перемалює екран.”
[Довідка] Правильна відповідь на запитання “Коли використовувати useLayoutEffect?” така:
Коли потрібно змінити верстку екрана.
useLayoutEffect використовується, коли потрібно виконати зміни в DOM, що залежать від оновленого компонування елементів. Він дозволяє вносити зміни в DOM синхронно перед тим, як браузер виконає етап малювання. Це може бути корисно, коли потрібно виміряти або маніпулювати версткою, наприклад, отримати розміри або позиції елементів, розрахувати зсуви прокрутки або виконати інші операції, що потребують актуальної інформації про верстку.
Інший варіант відповіді є неточним:
“Коли потрібно, щоб браузер перемалював перед запуском ефекту” — це неправильно. Мета useLayoutEffect полягає в тому, щоб виконати ефект синхронно після оновлення DOM, але перед тим, як браузер перемалює, дозволяючи вносити зміни, пов’язані з версткою, до того, як відбудеться візуалізація.
Пояснення:
useLayoutEffect виконується перед хуком useEffect, не зважаючи на мутації DOM. Хоча хук React useLayoutEffect встановлюється після хука useEffect, він викликається першим!
A. <button onClick={this.handleClick}>Click Me</button>
B. <button onClick={event => this.handleClick(event)}>Click Me</button>
function Dish(props) {
return (
<h1>
{props.name} {props.cookingTime}
</h1>
);
}
function Dish([name, cookingTime]) { return <h1>{name} {cookingTime}</h1>; }function Dish({name, cookingTime}) { return <h1>{name} {cookingTime}</h1>; }function Dish(props) { return <h1>{name} {cookingTime}</h1>; }function Dish(...props) { return <h1>{name} {cookingTime}</h1>; }React.PureComponent?shouldComponentUpdate()getDerivedStateFromProps() — це небезпечний метод для використанняconst Heading = () => {
<h1>Hello!</h1>;
};
h1.h1 в інший компонент.h1 в div.[e.target.id] у цьому фрагменті коду?const handleChange = (e) => {
setState((prevState) => ({ ...prevState, [e.target.id]: e.target.value }));
};
class Clock extends React.Component {
render() {
return <h1>Look at the time: {time}</h1>;
}
}
Array.map()?setState, а не об’єкт?setState є асинхронним і може призвести до несинхронних значень.Пояснення: Оскільки this.props і this.state можуть оновлюватися асинхронно, не слід покладатися на їхні значення для обчислення наступного стану.
ReactReactDOMRenderDOMvalue.defaultValue.default.const clock = (props) => {
return <h1>Look at the time: {props.time}</h1>;
};
thisrenderclock з великої літериПояснення: У JSX теги з малої літери вважаються HTML-тегами.
useEffect(function updateTitle() { document.title = name + ' ' + lastname; });useEffect(() => { title = name + ' ' + lastname; });useEffect(function updateTitle() { name + ' ' + lastname; });useEffect(function updateTitle() { title = name + ' ' + lastname; });fallbacksplitlazymemofunction MyComponent(props) {
const [done, setDone] = useState(false);
return <h1>Done: {done}</h1>;
}
useEffect(() => { setDone(true); });useEffect(() => { setDone(true); }, []);useEffect(() => { setDone(true); }, [setDone]);useEffect(() => { setDone(true); }, [done, setDone]);<button onClick={this.handleClick()}>Click this</button>
<button onClick={this.handleClick.bind(handleClick)}>Click this</button><button onClick={handleClick()}>Click this</button><button onClick={this.handleClick}>Click this</button><button onclick={this.handleClick}>Click this</button>fetch()?fetch() підтримується більшістю браузерів.useEffect(() => {
setName('John');
}, [name]);
this.setState(...)this.forceUpdate()class Button extends React.Component{
constructor(props) {
super(props);
// Відсутній рядок
}
handleClick() {...}
}
this.handleClick.bind(this);props.bind(handleClick);this.handleClick.bind();this.handleClick = this.handleClick.bind(this);<React.Fragment>
<h1>Our Staff</h1>
<p>Our staff is available 9-5 to answer your questions</p>
</React.Fragment>
<...>
<h1>Our Staff</h1>
<p>Our staff is available 9-5 to answer your questions</p>
</...>
<//>
<h1>Our Staff</h1>
<p>Our staff is available 9-5 to answer your questions</p>
<///>
<>
<h1>Our Staff</h1>
<p>Our staff is available 9-5 to answer your questions</p>
</>
<Frag>
<h1>Our Staff</h1>
<p>Our staff is available 9-5 to answer your questions</p>
</Frag>
count у компоненті, що потрібно додати в фігурні дужки в h1?class Ticker extends React.component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
render() {
return <h1>{}</h1>;
}
}
greeting?const greeting = isLoggedIn ? <Hello /> : null;
isLoggedIn дорівнює trueorderNumber?ReactDOM.render(<Message orderNumber="16" />, document.getElementById('root'));
h1, але виникає помилка неочікуваного токена під час виконання. Як це виправити?const element = <h1 style={ backgroundColor: "blue" }>Hi</h1>;
const element = <h1 style="backgroundColor: "blue""}>Hi</h1>;const element = <h1 style=>Hi</h1>;const element = <h1 style={blue}>Hi</h1>;const element = <h1 style="blue">Hi</h1>;replaceStaterefreshStateupdateStatesetStateconst Star = ({ selected = false }) => <Icon color={selected ? 'red' : 'grey'} />;
this.handleClick не прив’язано правильно)? A. <button onClick=this.handleClick>Click Me</button>
B. <button onClick={event => this.handleClick(event)}>Click Me</button>
Кнопка A не матиме доступу до об'єкта події при натисканніКнопка A не викличе обробник this.handleClick успішноНемає різниціКнопка B не викличе обробник this.handleClick успішно<Route path="/:id">
{' '}
<About />
</Route>
<Route path="/tid" about={Component} />
<Route path="/:id" route={About} />
<Route>
<About path="/:id" />
</Route>
const Greeting = ({ name }) => <h1>Hello {name}!</h1>;
class Greeting extends React.Component {
constructor() {
return <h1>Hello {this.props.name}!</h1>;
}
}
class Greeting extends React.Component {
<h1>Hello {this.props.name}!</h1>;
}
class Greeting extends React.Component {
render() {
return <h1>Hello {this.props.name}!</h1>;
}
}
class Greeting extends React.Component {
render({ name }) {
return <h1>Hello {name}!</h1>;
}
}
render?ReactDOM.render(
<h1>Hi<h1>,
document.getElementById('root')
)
<a> у React?Назад у браузері.Link це просто інша назва для тега <a>.<a> викличе помилку при використанні в React.<a> викликає повне перезавантаження сторінки, тоді як компонент Link цього не робить.x, який передається у функцію createElement?React.createElement(x, y, z);
useEffect(() => {
// щось робити
}, []);
class Comp extends React.Component {
render() {
return <h1>Look at the time: {time}</h1>;
}
}
ReactDOM.createPortal(x, y);
setCount?const [count, setCount] = useState(0);
const database = [{ data: 1 }, { data: 2 }, { data: 3 }];
database.map((user) => <h1>{user.data}</h1>);
const { name: firstName } = props;
name, що й об’єкт props.firstName об’єкта props присвоюється константі з назвою name.props.name.firstName.name об’єкта props присвоюється константі з назвою firstName.const MyComponent = ({ names }) => (
<h1>Hello</h1>
<p>Hello again</p>
);
ReactDOM.createPortal(x, y);
<div>?const MyComponent = ({ children }) => (
<div>{children.length}</div>
);
...
<MyComponent>
<p>
Hello <span>World!</span>
</p>
<p>Goodbye</p>
</MyComponent>
const [count, setCount] = useState(0);
import React from 'react';
import { createRoot } from 'reactjs-dom';
const element = <h1>Hi</h1>;
// Примітка: Помилка в рядку нижче
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(element);
createRoot(document.getElementById("root"));ReactDOM(element, document.getElementById("root"));renderDOM(element, document.getElementById("root"));DOM(element, document.getElementById("root"));render() {
const isLoggedIn = this.state.isLoggedIn;
return (
<div>
Користувач:
</div>
);
}
Користувач увійшов у систему? увійшов : не увійшов.Користувач {isLoggedIn = "ні"}.Користувач {isLoggedIn ? "увійшов." : "не увійшов"}.class StarTrekkin extends React.Component {
firePhotonTorpedoes(e) {
console.log('піу піу');
}
render() {
return; // Відсутній код
}
}
<button onClick={firePhotonTorpedoes()}>Піу Піу</button><button onClick={firePhotonTorpedoes}>Піу Піу</button><button onClick={this.firePhotonTorpedoes()}>Піу Піу</button><button onClick={this.firePhotonTorpedoes}>Піу Піу</button>prop-helper.prop-types.checker-types.let dish = <h1>Mac and Cheese</h1>;
let dish = <h1 id={heading}>Mac and Cheese</h1>;let dish = <h1 id="heading">Mac and Cheese</h1>;let dish = <h1 id:"heading">Mac and Cheese</h1>;let dish = <h1 class="heading">Mac and Cheese</h1>;class Huggable extends React.Component {
hug(id) {
console.log("hugging " + id);
}
render() {
let name = "kitten";
let button = // Відсутній код
return button;
}
}
<button onClick={(name) => this.hug(name)}>Hug Button</button>;<button onClick={this.hug(e, name)}>Hug Button</button>;<button onClick={(e) => hug(name, e)}>Hug Button</button>;<button onClick={(e) => this.hug(name, e)}>Hug Button</button>;Пояснення:
Це питання перевіряє знання класових компонентів React. Потрібно використовувати this, щоб викликати методи, оголошені всередині класових компонентів.
Пояснення: Компоненти React схожі на функції, які повертають HTML-елементи. Компоненти є незалежними та багаторазовими частинами коду. Вони служать тій самій меті, що й функції JavaScript, але працюють ізольовано та повертають HTML. Компоненти бувають двох типів: класові та функціональні.
function Dish() {
return (
<>
<Ingredient />
<Ingredient />
</>
);
}
class TransIsBeautiful extends React.Component {
constructor(props){
// Відсутній рядок
console.log(this) ;
}
...
}
constructor(props) {
super(props);
this.state = {
pokeDex: []
};
}
function add(x = 1, y = 2) {
return x + y;
}
add();

Пояснення: функція, викликана без параметра, використовуватиме типове значення для параметрів, тому x завжди буде дорівнювати 1, а y завжди буде дорівнювати 2.
const { tree, lake } = nature;
sent встановлена в булеве значення false?ReactDom.render(
<Message sent=false />,
document.getElementById("root")
);
<Message sent={false} />,
ReactDom.render(<Message sent="false" />, document.getElementById('root'));
<Message sent="false" />,
ReactDom.render(<Message sent="false" />, document.getElementById('root'));
const PokeDex = (props) => {
const [pokeDex, setPokeDex] = useState([]);
/// ...
};
Пояснення: useState завжди повертає масив із двома значеннями: сам стан (перше значення) і функцію set, яка дозволяє оновлювати стан (друге значення). Довідка по useState
const Greeting = ({ initName }) => {
const greet = (name) => console.log("Hello, " + name + "!");
return <button onClick={ ... }>Greeting Button </button>
}
Пояснення: Очевидно, що в питанні була помилка, де замість greet було написано hug. Відкинувши це, все одно можна винести уроки з цього питання.
this. У вікні браузера глобальний об’єкт — це [об’єкт Window].
Це функціональний компонент, тому this з this.hug насправді відноситься до вікна браузера.
Оскільки це функціональний компонент, можна безпосередньо звертатися до hug без використання this.initName доступний у функціональній області Greeting, тому його можна безпосередньо передати як аргумент до hug().React Hooks useCallback документація
useRef?class Greeting extends React.Component {
render() {
return <h1>Hello {this.props.name}!<h1>;
}
}
const Greeting = (name) => <h1>{name}</h1>function Greeting(name){return <h1>{name}</h1>;}const Greeting = props => { <h1>{props.name}</h1> }const Greeting = ({ name }) => <h1>Hello {name}</h1>;const Waitlist = () => {
const [name, setName] = useState('');
const [waitlist, setWaitlist] = useState([]);
const onSubmit = (e) => {
e.preventDefault();
waitlist.push(name);
};
return (
<div>
<form onSubmit={onSubmit}>
<label>
Name: <input type="text" value={name} onChange={(e) => setName(e.target.value)} />
</label>
<button type="submit">Add to waitlist</button>
</form>
<ol>
{waitlist.map((name) => (
<li key={name}>{name}</li>
))}
</ol>
</div>
);
};
waitlist змінюється безпосередньо. Використовуйте функцію setWaitlist, щоб оновити стан списку очікування.waitlist є повторювані імена.import React from 'react';
const [poked, setPoked] = React.useState(false);
function PokeButton() {
return <button onClick={() => setPoked(true)}>{poked ? 'You have left a poke.' : 'Poke'}</button>;
}
function PokeButton() {
const { poked, setPoked } = useState(false);
return <button onclick={() => setPoked(true)}>{poked ? 'You have left a poke.' : 'Poke'}</button>;
}
const OtherComponent = React.lazy(() => import('./OtherComponent.js'));
function MyComponent() {
return (
<XXXX fallback={<spinner />}>
<OtherComponent />
</XXXX>
);
}
useEffect(callNetworkFunc, XXXX);
<div>{isLoggedIn ? <Hello /> : null}</div>
useLayoutEffect?fetch()?fetch() підтримується більшістю браузерів.key під час рендерингу списку компонентів?key використовується для надання унікального ідентифікатора компоненту.key використовується для визначення кольору компонента.key обов’язковий для рендерингу списку компонентів.key використовується React для оптимізації оновлень і визначення, які елементи змінилися або були додані/видалені у списку.