Javascript 使用同一容器反应/重排多个组件
我对这项技术非常陌生,但我对一些事情感到困惑: 我有一个react容器,用于处理应用程序中应向用户显示的视图:Javascript 使用同一容器反应/重排多个组件,javascript,reactjs,ecmascript-6,redux,react-redux,Javascript,Reactjs,Ecmascript 6,Redux,React Redux,我对这项技术非常陌生,但我对一些事情感到困惑: 我有一个react容器,用于处理应用程序中应向用户显示的视图: const mapStateToProps = (state) => { return { currentScreen: state.currentScreen } } 并处理应用程序何时应更改当前屏幕: const mapDispatchToProps = (dispatch) => { return { changeScreen: (new
const mapStateToProps = (state) => {
return {
currentScreen: state.currentScreen
}
}
并处理应用程序何时应更改当前屏幕:
const mapDispatchToProps = (dispatch) => {
return {
changeScreen: (newScreen) => {
dispatch(changeScreen(newScreen))
}
}
}
但仅与应用程序组件连接:
import App from '../components/App'
const AppScreen = connect(
mapStateToProps,
mapDispatchToProps
)(App)
<List changeScreen={this.props.changeScreen} />
如何与所有组件共享changeScreen功能?当您定义mapDispatchToProps时,您将返回一个对象,然后该对象将映射到App的道具。因此,在你的应用程序组件中,只需检查道具,并注意你的功能更改屏幕是存在的。这假设您已经定义了正在进行的引用
您可以在此处阅读有关connect函数工作原理的更多信息:定义mapDispatchToProps时,您将返回一个对象,然后该对象将映射到App的道具。因此,在你的应用程序组件中,只需检查道具,并注意你的功能更改屏幕是存在的。这假设您已经定义了正在进行的引用
您可以在此处阅读有关连接功能如何工作的更多信息:您可以在子组件的道具中传递连接的changeScreen功能,也可以在子组件中使用mapDispatchToProps 例如,如果应用程序具有列表子组件:
import App from '../components/App'
const AppScreen = connect(
mapStateToProps,
mapDispatchToProps
)(App)
<List changeScreen={this.props.changeScreen} />
您可以在子组件的道具中传递连接的changeScreen函数,也可以在子组件中使用mapDispatchToProps 例如,如果应用程序具有列表子组件:
import App from '../components/App'
const AppScreen = connect(
mapStateToProps,
mapDispatchToProps
)(App)
<List changeScreen={this.props.changeScreen} />
创建一个新文件actions.js,以便可以从任何地方调用此操作。 例如:
export function changeScreen(newScreen){
return({
your code here....
});
}
现在,您可以在应用程序组件中或从任何其他组件中共享
import { changeScreen } from './actions';
import { bindActionCreators } from 'redux';
并使用bindActionCreators进行调度
function mapDispatchToProps(dispatch){
return bindActionCreators({ changeScreen }, dispatch);
}
希望这有帮助 创建一个新文件actions.js,以便可以从任何地方调用此操作。 例如:
export function changeScreen(newScreen){
return({
your code here....
});
}
现在,您可以在应用程序组件中或从任何其他组件中共享
import { changeScreen } from './actions';
import { bindActionCreators } from 'redux';
并使用bindActionCreators进行调度
function mapDispatchToProps(dispatch){
return bindActionCreators({ changeScreen }, dispatch);
}
希望这有帮助 您可以使用上下文或依赖项注入使changeScreen全局运行。下面的示例使用上下文
如果您发现在需要changeScreen函数时向每个子组件添加contextTypes。您可以使用依赖注入模式。下面是一个您可以使用上下文或依赖项注入使changeScreen全局运行。下面的示例使用上下文
如果您发现在需要changeScreen函数时向每个子组件添加contextTypes。您可以使用依赖注入模式。以下是您为什么不将connect的输出重新用于多个组件,例如: 服务/ChangeScreen.js 容器/Home.js 容器/Modal.js
为什么不将connect的输出重新用于多个组件,例如: 服务/ChangeScreen.js 容器/Home.js 容器/Modal.js
changeScreen函数已在App component中成功定义,我想知道的是如何在所有组件之间共享此函数,而无需为每个组件在不同容器中编写相同的代码changeScreen函数已在App component中成功定义,我想知道的是如何在所有组件之间共享这个函数,而不必为每个组件在不同的容器中编写相同的代码