class Parent extends Component {
state = {
text: 'some text',
};
handleClick = () => {
this.setState({ text: 'some other text'});
};
render() {
const { text } = this.state;
return (
<Wrapper>
<Button onClick={this.handleClick} />
<Text>{text}</Text>
</Wrapper>
);
}
}
npm install --only=prod
npm install --only=production
npm install --only=dev
npm install --only=development
const mapStateToProps = (state) => {
projects: state.projects
}
const mapStateToProps = (state) => ({
projects: state.projects
});
i % j == 0
приj >=2 && j < i
(i делится на j без остатка при значениях j от 2 и выше, но меньше i) число i не является простым и мы нам надо выйти из итерации цикла, но не внутреннего, в котором мы в данный момент находимся, а внешнего, так как нас больше текущее значение i не интересует. Для этого используется метка main. Вызов continue main;
переносит нас на следующую итерацию внешнего цикла. .visually-hidden {
visibility: hidden;
position: absolute;
/* или */
clip: rect(0, 0, 0, 0);
position: absolute;
/* или */
transform: scale(0, 0);
position: absolute;
/* или */
opacity: 0;
position: absolute;
pointer-events: none;
user-select: none;
/* или */
height: 0;
position: absolute;
overflow: hidden;
padding: 0;
border: none;
outline: none;
box-shadow: none;
}
.visually-hidden {
position: absolute;
clip: rect(0 0 0 0);
width: 1px;
height: 1px;
margin: -1px;
}
class Example extends Component {
state = {
inputValue: '',
};
handleChange = e => {
const { name, value } = e.target;
this.setState({
[name]: value,
});
};
handleSubmit = e => {
e.preventDefault();
// получить состояние формы можно обратившись к this.state
};
render() {
const { inputValue } = this.state;
return (
<form onSubmit={this.handleSubmit}>
<input
name="inputValue"
value={inputValue}
onChange={this.handleChange}
/>
...
</form>
);
}
var x = prompt("введите число");
console.log(typeof x); // string
var x = +prompt("введите число");
console.log(typeof x); // number при условии, что строку можно привести к числу
'0' === 0 // false
var input = prompt('Введите число: ');
if (input === '') {
alert('Пустая строка');
} else if (input === null) {
alert('Вы нажали "Отмена"');
} else if (Number.isNaN(+input)) {
alert('Вы ввели не число');
} else if (+input === 0) {
alert('Вы ввели 0');
} else if (+input > 0) {
alert('Вы ввели число больше 0');
} else {
alert('Вы ввели число меньше 0');
}
n, n + 1, n + 2, ..., n + m - 1
1, 2, 3, 4, 5
0, 1, 2, 3, 4
{ sum: 15, count: 5 }
{ sum: 10, count: 5 }
x = 15 / 5;
x = 10 / 5;
class Example extends Component {
state = {
eventsList,
selectedEvent,
};
handleSelectEvent(event) {
this.setState({ selectedEvent: event });
}
render() {
const { eventsList, selectedEvent } = this.state;
return (
<Wrapper>
{selectedEvent && <EventDetails event={selectedEvent} />}
<ul>
{eventsList.map(event => (
<li
key={event.id}
onClick={() => this.handleSelectEvent(event)}
>
{event.name}
</li>
))}
</ul>
</Wrapper>
);
}
}
<BrowserRouter>
<App />
</BrowserRouter>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/events" component={EventsList} />
<Route path="/event/:id" component={EventDetails} />
</Switch>
class EventsList extends Component {
state = {
eventsList,
};
render() {
const { eventsList } = this.state;
return (
<Wrapper>
<ul>
{eventsList.map(event => (
<li key={event.id}>
<Link to={`/event/${event.id}`}>{event.name}</Link>
</li>
))}
</ul>
</Wrapper>
);
}
}
class EventsList extends Component {
componentDidMount() {
const elementId = this.props.match.params.id;
}
render() {
...
}
}
class Game {
// some stuff
createGame() {
this.players = [];
for (let i = 0; i < this.playersCount; i++) {
const player = new Player({
name: `Player ${i}`,
cards: this.createCards()
});
this.players.push(player);
}
}
createCards() {
// some stuff
}
// some stuff
}
export default (state = initState, action) => {
if(action.type === 'ADD_VAL'){
return [
...state,
action.date
];
}
return state;
};
const values = (state = initState, action) => {
if(action.type === 'ADD_VAL'){
return [
...state,
action.date
];
}
return state;
};
export default values;