this.searchPosts()
в componentWillReceiveProps / getDerivedStateFromProps, но как уже написал выше - лучше все сделать в одном запросе. Component A
state = {
fromSuperComponent: '123',
}
callMeHandle = (e) => {
this.setState({
fromSuperComponent: e.currentTarget.value,
})
}
render() {
return (
<form>
<input type='text' value='test'/>
<SuperComponent callMeWhenDataChanged={this.callMeHandle} value={this.state.fromSuperComponent} />
</form>
)
}
SuperComponent
render() {
<input type='text' value={this.props.value} onChange={this.props.callMeWhenDataChanged} />
}
...
state = {
myData: []
}
...
this.setState({ myData: [[1,2,3],[4,5,6],[7,8,9]] })
{
type: 'BLA_BLA'
}
function qq() {
return {
type: 'BLA_BLA',
}
}
dispatch(qq())
// или
dispatch({
type: 'BLA_BLA',
})
export default (state = initialState, action) => {
switch (action.type)
{
case 'BLA_BLA':
// вот сюда придет javascript компилятор, так как вы попали в нужный кейс
// ибо выше указано - switch по типу экшена (action.type)
// ниже вы делаете что вам нужно с вашими данными
// конкретно в этом кейсе, вы берете все что было в state и изменяете loading на true
return { ...state, loading: true };
case CALLBACK_SUCCESS:
// сюда action с типом 'BLA_BLA' не попал
return { ...state, status: 'OK' };
case CALLBACK_ERROR:
// сюда тоже
return { ...state, status: 'ERROR', message: action.message };
default:
// и сюда
return state;
}
}
onDeleteClick
(который является методом вашего класса)state = {
users: [/*.. массив с юзерами*/]
}
...
onDeleteClick = (e) => {
const id = e.currentTarget.dataset.myId
const новый_массив = массив_без_удаленного_элемента (подсказка, удалять можно через фильтрацию по айди)
this.setState({ users: новый_массив })
}
...
let user = this.props.users.map(function(user){
return <li key={user.id}><User number={user.id} id={user.id} text={user.id} onDeleteClick={this.onDeleteClick}/></li>
})
...
// где-то там в компоненте User (что там внутри не знаю, но предположим есть кнопка удаления как вы пишите)
...
render() {
<div>
// что-то по верстке про юзера
<button onClick={this.props.onDeleteClick} data-my-index={this.props.user.id}> Удалить</button>
</div>
}
const mapStateToProps = state => ({ // state = все ваши редьюсеры, то есть тут лучше было бы писать store, но так уж поевелось..
campaigns: state.campaigns, // компонент подписывается только на state.campaigns (то есть только на редьюсер campaigns)
});
connect(mapStateToProps/*, mapDispatchToProps*/)(CampaignsList) // происходит коннект, mapDispatshToProps - это для "прокидывания" создателей действий (action creator)
"eslintConfig": {
"extends": "react-app"
}