const arr = useMemo(() => {
const multiple = [ 'Format', 'Stars' ];
return str
.split('\n\n')
.map(n => n
.split('\n')
.reduce((acc, m) => (
m = m.split(/(?<=^[^:]+): /),
acc[m[0]] = multiple.includes(m[0]) ? m[1].split(', ') : m[1],
acc
), {}));
}, [ str ]);
<ul>
{arr.map(n => (
<li>
<h3>{n.Title}</h3>
<div>Year: {n['Release Year']}</div>
<div>Format: <ul>{n.Format.map(m => <li>{m}</li>)}</ul></div>
<div>Stars: <ul>{n.Stars.map(m => <li>{m}</li>)}</ul></div>
</li>
))}
</ul>
onMarkerMouseOver() {
this.openPopup();
}
<Marker onMouseOver={this.onMarkerMouseOver}>
<Input handleInput={this.handleInput} />
onChange={this.props.handleInput}
case 'BASKET':
return {
...state,
products: state.products.map(n => n.name === action.payload
? { ...n, basket: true }
: n
),
};
onPress={() => this.props.addToBasket.bind(this, this.props.product.name)}
onPress={() => this.props.addToBasket(this.props.product.name)}
const showProductsList = (type, maxlength) => { <...> if(product.basket == type & currentLength < maxlength) {
showProductsList("true", 4)
true
не будет равно "true"
, убираем кавычки: showProductsList(true, 4)
.sortByPrices
и sortByDuration
? Дайте-ка попробую угадать - принимают в качестве параметра массив, и его же сортируют. Если так, то ответ на вопрос "куда копать" очевиден - копайте основы js, какие бывают типы данных, в чём их особенности. Массивы являются объектами, а объекты при присваивании / передаче в функцию / возврате из функции не копируются, копируются ссылки на них. То есть, несколько раз сортируется один и тот же массив - естественно, что при выводе всегда будет отображаться результат последней сортировки. Делайте копии массива, сортируйте копии, передавайте эти копии в экземпляры TicketsList
, типа tickets={sortByPrices([...visibleData])}
. Насколько он сложен вообще?
Много ли отличии?
class App extends React.Component {
state = {
isTimerActive: false,
}
setTimerActive = isTimerActive => {
this.setState(() => ({ isTimerActive }));
}
onClick = () => {
this.setTimerActive(true);
setTimeout(this.setTimerActive, 60000, false);
}
render() {
const { isTimerActive } = this.state;
return(
<button disabled={isTimerActive} onClick={this.onClick}>
{isTimerActive ? 'отправлено' : 'отправить повторно'}
</button>
);
}
}
.container {
background: #224B7A;
}
.container.active {
background: #fff;
}
state = {
active: false,
}
toggleActive = ({ type }) => {
this.setState(() => ({
active: type === 'focus',
}));
}
<div className={`container ${this.state.active ? 'active' : ''}`}>
...
<input onFocus={this.toggleActive} onBlur={this.toggleActive} />
<VictoryChart>
<VictoryAxis
style={{
axis: {
stroke: 'здесь ваш цвет',
},
}}
/>
</VictoryChart>
let data = {}; await fetch(url).then((res) => res.json()).then(json => { data = { temperature: json.main.temp } }) return data;
return fetch(url).then(r => r.json());
.this.setState(() => { return { weather: this.askForWeather.getNeededData() } });
this.askForWeather.getNeededData().then(weather => {
this.setState(() => ({ weather }));
});
<Main temperature={this.state.weather.temperature}/>
{this.state.weather && <Main temperature={this.state.weather.main.temp} />}
setCount(count => count + 1);
.что я делаю не так?
что я сделал не так?
ul
находятся i
и div
? Почему li
находится внутри div
? Разберитесь, кого чьим контентом можно и нельзя делать.#hide
должно браться из стейта, обновлять надо стейт; innerText
, который вы хотите получить - его также надо брать из стейта.selectItem
- подумайте, как его переписать так, чтобы вместо объекта события (который вам нужен ради свойства target
, да?) он принимал данные, на основе которых создан li
. <Placemark
options={{
iconLayout: 'default#image',
iconImageHref: 'здесь путь к вашей картинке',
}}
/>
<Spring
key={this.state.number}
from={{ opacity: 0, marginTop: 50 }}
to={{ opacity: 1, marginTop: 0 }}
>
{({ opacity, marginTop }) => (
<div style={{ opacity, marginTop }}>{this.state.number}</div>
)}
</Spring>