У меня есть функция onClick, которая изменяет состояние className, чтобы показать и скрыть некоторые стили, которые у меня есть. Кнопка работает нормально при первом нажатии, но после этого не может быть нажата повторно.
Как показано ниже, у меня есть компонент, который подключается к моему хранилищу redux. Я создал функцию handleClick, чтобы вызвать actionCreator, который я показываю в своих действиях. Я хочу, чтобы функция onClick срабатывала при каждом щелчке и меняла щелчок, находящийся в моем состоянии, на противоположный тому, что было раньше. Мне где-то не хватает предыдущего состояния? Я напрямую меняю свое состояние, когда мне нужно его копировать? В любом случае, надеюсь, вопрос имеет смысл.
Изменить: я обнаружил, что, когда я нажимаю кнопку, состояние щелчка остается верным, не знаю, почему оно не переключается.
class BackDrop extends React.Component {
handleClick = () => {
this.props.projectClick();
};
render() {
console.log(this.props);
return (
<div className={this.props.click ? 'backdrop-click' : 'backdrop'}>
<button className="btn-click" onClick={()=> {this.handleClick()}}>
{this.props.click ? 'Back' : 'View Projects'}
</button>
<ProjectDisplay
click={this.props.click}
/>
</div>
)
}
}
const mapStatetoProps = (state) => {
return state;
};
export default connect(mapStatetoProps, actionCreators)(BackDrop);
//Reducer
const initialState = {
click: false,
};
const mainReducer = (state = initialState, action) => {
switch(action.type) {
case "PROJECT_CLICK":
return {
...state,
click: !action.click,
};
default:
return {
...state,
}
}
};
export default mainReducer;
//Action
export function projectClick(click) {
return {
type: "PROJECT_CLICK",
click,
}
}
actionCreators
в ваших фрагментах. Однако, когда вы вызываетеthis.props.projectClick();
, вы не передаете там аргумент - может ли это быть вашей проблемой? С другой стороны, если это всегда переключатель, вы также можете использоватьclick: !state.click
в своем редукторе. Удачной отладки. ;-) - person sthzg   schedule 24.11.2017