【发布时间】:2020-09-07 08:19:13
【问题描述】:
当用户从下拉复选框中选中任何选项时,我在下拉组件中使用复选框菜单,然后状态更新,现在工作正常我想将该状态用于我的其他组件我该怎么做我知道 redux 用于兄弟姐妹之间的交流,但我遇到了麻烦 这是我的下拉代码
import { connect } from "react-redux";
const options1 = [
{label: 'One', value: 1},
{label: 'Two', value: 2},
{label: 'Three', value: 3},
];
class _Dropdown extends React.Component {
constructor(props) {
super(props);
this.state = {
selected: [],
};
this.selected = this.selected.bind(this);
}
selected = (selected) => {
// selectedFruits is array of { label, value }
this.setState({selected}, () => {
sessionStorage.setItem(
recent_slected_user_accountsid + 'selected zones_ID',
this.state.selected,
);
sessionStorage.setItem('zoneflag', 1);
});
};
render() {
return (
<div>
<MultiSelect
onSelectedChanged={this.selected}
options={options}
selected={this.state.selected}
/>
</div>
);
}
}
const mapStateToProps = state => {
return {
age: state.age
};
};
const mapDispachToProps = dispatch => {
return {
onAgeUp: () => dispatch({ type: "AGE_UP", value: new _Dropdown().state.selected}),
// how can i pass selected state to this dispatch function because i am trying to use state outside a component
onAgeDown: () => dispatch({ type: "AGE_DOWN", value: "raza"})
};
};
// export default _Dropdown
export default connect(
mapStateToProps,
mapDispachToProps
)(_Dropdown);
这是我的 reducer.js
const initialState = {
age: "raza"
};
const reducer = (state = initialState, action) => {
const newState = { ...state };
switch (action.type) {
case "AGE_UP":
newState.age = action.value;
break;
case "AGE_DOWN":
newState.age = action.value;
break;
}
return newState;
};
export default reducer;
这是我的 index.js
import '@babel/polyfill';
import React from 'react';
import { render } from 'react-dom';
import App from './components/App';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import reducer from '../app/routes/Meep/store/reducer';
const store = createStore(reducer);
render(
<Provider store={store}><App /></Provider>,
document.querySelector('#root')
);
现在我想在我的其他组件中使用该选定状态,我该怎么做?如果已经通过使用 react Redux 进行了尝试,但是我遇到了麻烦如何在调度函数中传递该状态?谁能帮我解决这个问题?
【问题讨论】:
-
你能重新格式化你的代码吗?像这样读起来真的很难……
-
发布你的完整代码,包括你的 redux reducer/actions。
-
为什么要将它与 redux(或会话存储)耦合?通常,像这样的控件只会公开像
onChange这样的回调。 -
是的 @jonrsharpe 是对的,这与 redux 或任何状态管理库无关。您可以使用道具钻孔或上下文 API 来完成此操作。 OP 还应该了解 props 是如何在 React 中传递的。
-
我更新了代码先生......我正在使用 redux,因为我想在 redux 存储中全局初始化所选状态,然后我在任何地方使用它