inputChange = e => {
const index = +e.target.dataset.index;
this.setState({
workers: this.state.workers.map((n, i) => i === index
? { ...n, checked: e.target.checked }
: n
),
});
}
<input
type="checkbox"
data-index={index}
onChange={this.inputChange}
checked={item.checked}
/>
const sum = this.state.workers.reduce((acc, n) => acc + (n.checked ? n.salary : 0), 0);
submitText = (e) => {
this.setState({
text: e.target.value,
});
}
headerObj.offsetTop
const frame = document.getElementsByTagName('iframe')[0];
filters: [
{ field: 'bg', value: '', options: [ 'black', 'white' ] },
{ field: 'color', value: '', options: [ 'red', 'green' ] },
],
filters.map((n, i) => (
<label>
{n.field}:
<select data-index={i} onChange={this.onChange}>
<option value="">none</option>
{n.options.map(n => <option>{n}</option>)}
</select>
</label>
))
onChange = e => {
const index = +e.target.dataset.index;
const value = e.target.value;
this.setState(prevState => ({
filters: prevState.filters.map((n, i) => index === i ? { ...n, value } : n)
}));
}
const filteredData = filters.reduce((acc, n) => {
return n.value
? acc.filter(m => m[n.field].includes(n.value))
: acc;
}, data);
у меня много столбцов, плюс к этому много таблиц, и логику фильтра нужно применить ко всему
Я начинающий
мне кажется, это решение не очень хорошее из-за указания конкретного имени (phoneValues)
class App extends React.Component {
state = {
music: musicButton,
}
onClick = e => {
if (this.audio) {
this.audio.pause();
}
this.audio = new Audio(e.target.dataset.url);
this.audio.play();
}
render() {
return (
<div>
{this.state.music.map(n => (
<button onClick={this.onClick} data-url={n.url} key={n.numButton}>{n.soundsName}</button>
))}
</div>
);
}
}
modals.entries() судя по документации должен предоставить [key, value]
[...modals.entries()].map(([ id, modal ]) => (
))
<Wrapper itemHeight="300px">
height: ${p => p.itemHeight};
будет height: ${p => p.itemHeight || '200px'};
, например. Или можно переписать компонент так:export const Wrapper = styled.article(({
itemWidth,
itemHeight = '200px',
}) => ({
backgroundColor: '#efefef',
margin: '5px',
height: itemHeight,
width: itemWidth,
}));
const ItemComponent = props => (
<div>
<p>{props.title}</p>
</div>
);
...
<Carousel
items={items}
ItemComponent={ItemComponent}
/>
nextHandler = () => {
const items = [...this.state.items];
items.push(items.shift());
this.setState({ items });
}
prevHandler = () => {
const items = [...this.state.items];
items.unshift(items.pop());
this.setState({ items });
}
<button onClick={this.nextHandler} data-step={-1}>prev</button>
<button onClick={this.nextHandler} data-step={+1}>next</button>
nextHandler = (e) => {
const step = +e.target.dataset.step;
this.setState(({ items }) => ({
items: [ ...items.slice(step), ...items.slice(0, step) ],
}));
}