Этот метод стоит на событие onChange.
handleChange = ({ target: { value, dataset: { type } } }) => {
if (value.length <= limits.user.max) {
this.setState({
[type]: value,
});
}
}
<input onChange={this.handleChange} data-type="xxx">
<input onChange={this.handleChange} data-type="yyy">
<input onChange={this.handleChange} data-type="zzz">
Как это можно исправить?
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/:user/:commit" component={CommitPage} />
<Route path="/:user" component={UserPage} />
</Switch>
Что стоит изучить, чтоб разобраться в вопросе?
Но как мне их передать в дочку на отображение ?
<SearchHub error={error} isLoaded={isLoaded} items={items} />
class SearchHub extends Component {
render(){
const { error, isLoaded, items } = this.props;
if (error) {
return <div>Error: {error.message}</div>;
} else if (!isLoaded) {
return <Loader type="big" active> </Loader>;
} else {
return (
<div className={styles.parent}>
<div>
{items.map(item => (
<Gapped gap={20} key={item.name}>
<span><b>{item.rating.totalLove}</b></span>
<span><img src={shape} alt="heart"/></span>
<span><img src={item.avatarUri} alt="avatar" className={styles.photo}/></span>
<span>{item.name}<br/>{item.role}</span>
</Gapped>
))}
</div>
</div>
);
}
}
}
Object.entries(obj).map(([ key, val ]) => (
<BlockItemComp
name={key}
val={val}
/>
))
this.setState({ studios: res.data, isLoading: false })
this.setState({ max: this.state.studios.reduce((l, e) => (e.price > l.price ? e : l)) });
this.setState({ min: this.state.studios.reduce((l, e) => (e.price < l.price ? e : l)) });
this.setState({
studios: res.data,
isLoading: false,
max: res.data.reduce((l, e) => (e.price > l ? e.price : l), -Infinity),
min: res.data.reduce((l, e) => (e.price < l ? e.price : l), Infinity),
});
// или, без reduce'ов
const prices = res.data.map(n => n.price);
this.setState({
studios: res.data,
isLoading: false,
max: Math.max(...prices),
min: Math.min(...prices),
});
render() {
const
text = this.state.filterText,
posts = text ? db.filter(n => n.descr.includes(text)) : db;
return(
<div className="App">
<Nav/>
<Header/>
<SearchBar
filterText={this.state.filterText}
onUserInput={this.handleUserInput}
/>
<Posts handleUserIput={this.state.filterText} data={posts}/>
<Footer/>
</div>
);
}
Я реализовал примерно по документации, но...
{{postImage}}
по фигурной скобке с обоих концов убрать, например. return state["users"].entities.forEach(user => { if (user.email === state["auth"].user.email) { return user; } });
return state.users.entities.find(user => user.email === state.auth.user.email);
renderContent = (arr, id) => {
return Object.values(arr.delete(id).map(item => <li key={item.id}>{item.name}</li>).toJS())
}
i.includes(["качель","окно"])
[ 'качель', 'окно' ].includes(i)
const mapStateToProps = ({ list }, { params }) => ({
list: list.filter(n => n.params.some(m => params.includes(m))),
});
Нужно вывести это все в сетку по 4 элемента в строке <...> Не понятно как перебирая массив делать строки
const { items } = this.state;
const inRow = 4;
const rows = Array.from(
{ length: Math.ceil(items.length / 4) },
(n, i) => items.slice(i * 4, (i + 1) * 4)
);
{rows.map(n => (
<div className="row">
{n.map(m => <div>{m}</div>)}
</div>
))}
У меня получается создать коллекцию, но Ymaps и Map не имеют метода setBounds (выводил в console.log(ymaps) и console.log(map)).
Пытался нагуглить, но самостоятельно разобраться в простыне кода не могу.
handleTdClick(item) {
{this.state.rows.map((row, rowIndex) => (
<tr>
{row.map((item, colIndex) => (
<td
onClick={this.onTdClick}
data-row={rowIndex}
data-col={colIndex}
className={item ? 'not-empty' : 'empty'}
>
{item}
</td>
))}
</tr>
))}
onTdClick = ({ target: { dataset: d } }) => {
const row = +d.row;
const col = +d.col;
this.setState(({ rows }) => ({
rows: rows.map((n, i) =>
i === row
? n.map((m, j) => j === col ? +!m : m)
: n
)
}));
}
const addEntry = (state, action) => {
const cards = [...state.cards];
const index = cards.findIndex(n => n.id === action.id);
const card = {...cards[index]};
card.entries = [ ...card.entries, { id: Math.random().toString(36).substring(7) } ];
cards[index] = card;
return { cards };
};
const addEntry = (state, action) => {