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_id1
localhost: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>
))}