如何将道具传递给Javascript映射中的另一个组件?
我有这个密码如何将道具传递给Javascript映射中的另一个组件?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有这个密码 import React from 'react'; import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; import 'materialize-css/sass/materialize.scss'; import 'font-awesome/scss/font-awesome.scss'; import Storage from './Storage.js' import {
import React from 'react';
import {connect} from 'react-redux';
import {bindActionCreators} from 'redux';
import 'materialize-css/sass/materialize.scss';
import 'font-awesome/scss/font-awesome.scss';
import Storage from './Storage.js'
import {fetchStorage, loadAddStorageModal, selectStorage} from '../actions/StorageActions.js'
class SideNavContainer extends React.Component {
componentWillMount() {
this.props.fetchStorage();
}
render() {
console.log(this.props);
return (
<ul id="slide-out" className="side-nav fixed">
{
var hold = this.props;
this.props.storages.fetchedStorages.map(function (storage, i) {
return <Storage key={i} >{storage.name}</Storage>
})
}
<li>
<a className="waves-effect waves-light" onClick={() => this.props.loadAddStorageModal(true)}><i className="fa fa-plus" aria-hidden="true">Add</i></a>
</li>
<li className="hide-on-large-only"><a href="/Home/Index">Home</a></li>
<li className="hide-on-large-only"><a href="/Account/SignOut">Signout</a></li>
</ul>
)
}
}
function mapStateToProps(state) {
return {
storages: state.storages
};
}
function matchDispatchToProps(dispatch){
return bindActionCreators({fetchStorage: fetchStorage, loadAddStorageModal: loadAddStorageModal, selectStorage: selectStorage }, dispatch);
}
export default connect(mapStateToProps, matchDispatchToProps)(SideNavContainer);
从“React”导入React;
从'react redux'导入{connect};
从“redux”导入{bindActionCreators};
导入“MaterializeCSS/sass/materialize.scss”;
导入'font-awesome/scss/font-awesome.scss';
从“./Storage.js”导入存储
从“../actions/StorageActions.js”导入{fetchStorage,loadAddStorageModal,selectStorage}
类SideNavContainer扩展了React.Component{
componentWillMount(){
this.props.fetchStorage();
}
render(){
console.log(this.props);
返回(
{
var hold=this.props;
this.props.storages.fetchedStorages.map(函数(storage,i){
返回{storage.name}
})
}
-
)
}
}
函数MapStateTops(状态){
返回{
存储:state.storages
};
}
功能匹配DispatchToprops(调度){
返回bindActionCreators({fetchStorage:fetchStorage,loadAddStorageModal:loadAddStorageModal,selectStorage:selectStorage},dispatch);
}
导出默认连接(mapStateToProps、matchDispatchToProps)(SideNavContainer);
我正在尝试将“this.props”传递到我的存储组件中。我试着去做
return <Storage {...this.props} key={i} >{storage.name}</Storage>
返回{storage.name}
但我相信范围已经改变了,所以不再有效。我试图把它放在一个名为“hold”的变量中,但这只会使整个应用程序崩溃,因为它说“var”是一个意外的标记。使用自动绑定this
:
this.props.storages.fetchedStorages.map((storage, i) => {
return <Storage key={'storage-' + i} {...this.props}>{storage.name}</Storage>;
});
this.props.storages.fetchedStorages.map((存储,i)=>{
返回{storage.name};
});
很酷。我只是看了看,我觉得通过所有的道具太过分了。我怎么能从action creator传入selectStorage?我可以使用“bind”{this.props.selectStorage.bind(this)}获得它,但使用自动绑定无法获得它。也许我做得不对尝试将var-hold=…
移动到return
语句之前。