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>
);
} {
!this.handleUserIput ? this.props.data.map(data =>
<Post key={data.id} title={data.title} img={data.img} descr={data.descr}/>
) :
this.props.data.filter(data=>data.title===this.handleUserIput).map(data =>
<Post key={data.id} title={data.title} img={data.img} descr={data.descr}/>
)}<Route path="/more/:id" component={More}/><Link to={`more/${this.props.itemId}`} className="descr">подробнее</Link>export default function More(props){
const { id } = props.match.params;
const item =props.items[id];
const { id, title, descr, img, price } = item;
return(
<div className="more__info">
...
</div>
);
}localhost:3000/more_id1localhost:3000/more/1 class App extends Component {
state = {
activeItemId: -1,
};
selectItem = id => {
this.setState({
activeItemId: id,
});
};
render() {
const { items } = this.props;
const { activeItemId } = this.state;
const activeItem = items.find(item => item.id === selectedItemId);
return (
<Wrapper>
<More item={activeItem} />
<Items
items={items}
onSelectItemCalback={this.selectItem}
/>
</Wrapper>
);
}
}
this.setState({ price: this.state.price + price, title: [this.state.title+title]});this.setState({
price: this.state.price + price,
title: this.state.title.concat(title)
}); SELECT SUM(`price`) FROM `basket` WHERE `userid`=:userid; приходится вопрошать на форуме, как из этой простыни джаваскрипта, htmlя и компонентов выдрать чёртову сумму.
NavLink в Nav (кстати, а что там после этого останется? - да ничего, кроме рендеринга a, которому прокидываются props без изменений; получается, что не так уж и нужен этот компонент, проще создавать этот a сразу в Nav), и хранить в нём индекс активного элемента:state = {
active: null,
...
}setActive(active) {
this.setState({ active });
}{this.state.items.map((n, i) => (
<li>
<NavLink
href="#"
className={this.state.active === i ? 'active' : ''}
onClick={() => this.setActive(i)}
>
{n}
</NavLink>
</li>
))}