2016-04-14 96 views
3

我想使用阵营+终极版在我codepen笔,但是连接不注入道具,阵营 - 终极版进行连接不工作

也许它因为是一个业余爱好者,我失去了一些东西。请看一看。 http://codepen.io/sahil28v/pen/EKEKME?editors=0010

const { Component } = React; 
const { createStore, bindActionCreators, applyMiddleWare, combineReducers } =  Redux; 
const { Provider, connect } = ReactRedux; 

const Application =() => (
     <div className="ground"> 
    <Tmap /> 
     </div> 
    ); 

class Tmap extends Component { 
    constructor(props){ 
    super(props); 
    console.log(this.props.mapstate); // This is returning undefined,no idea why 
    console.log(store.getState().mapstate); // Though this returns val: "hey" as it should properly though. 
} 
render() { 
    return (
    <div> 

    </div> 
); 
} 
} 

const mapStateToProps = (state) => ({ 
mapstate: state.mapstate 
}); 

connect(mapStateToProps)(Tmap); 

const initialState = { 
    val: "hey" 
} 

const mapReducer = (state = initialState, action) => { 
return state ; 
} ; 

const rootReducer = combineReducers({ 
    mapstate: mapReducer, 
}); 

const store = createStore(rootReducer); 

React.render(
    <Provider store={store}> 
     <Application /> 
    </Provider>, document.getElementById('app') 
); 

而且,,,我可以在店内配置在这里codepen本身使用Redux的devtools(Chrome扩展)。 我试着添加... window.devToolsExtension? window.devToolsExtension():f => f,创建存储但不起作用。

虽然有人回答 - 你能推荐好的文档/视频: - >学习ES6 ...

- 感谢您的帮助

回答

3

连接返回组件的一个新实例我想。这工作,使用连接作为装饰。

@connect(
    state => ({ 
    mapstate: state.mapstate 
    }) 
) 
class Tmap extends Component { 
    constructor(props){ 
    super(props); 
    alert(this.props.mapstate); // This is returning undefined,no idea why 
    alert(store.getState().mapstate); //As I understand this is the direct low level api which connect is meant to abstract away along with store.subscribe. 
    } 

    render() { 
    return (
    <div> 
    </div> 
    ); 
    } 
} 
+0

嘿谢谢你的回复,是的,它确实将状态作为道具引入,但这是否意味着我需要在每个课程之前添加@connect(...)并且是否会订阅存储更改?。在这种情况下,mapDispatchToProps如何工作。也不是这个react-redux.min.js工作 - >它似乎在当地环境中工作得很好。必须有一些我不知道的东西,而不是点击。 – user4076248

+0

技术上是。但你宁愿'连接'一些容器组件。 'connect'需要'mapStateToProps'和'mapDispatchToProps',那么你可以这样使用它'@connect(state =>({...}),dispatch =>({addTodo:(value)=> dispatch(addTodo (value))}))并在'actions'文件中描述'addTodo'函数:const addTodo = value => dispatch(...)。 (对于缩进感到抱歉) –

+0

我很高兴接受你的回答,因为将连接添加为装饰器确实会注入状态作为道具,这是我发布时开始的问题。虽然我仍然很关心为什么connect(mapStateToProps)(ComponentName)在导入react-redux.min.js时不起作用。请分享你的看法,为什么如果可以的话,它不工作。再一次感谢你的帮助。 – user4076248

3

您忘记将连接结果保存到新变量中。而这个新变量就是你应该使用的而不是Tmap。

const CTmap = connect(... 
.... 
<CTmap/> 
+0

- 嗨莱夫,谢谢你的提问,但我在纪尧姆的回复之后意识到了:)。好东西,但是我了解@符号及其用法。 – user4076248

+0

啊是的,...现在我看到您的评论。 –