我将observable-react-project转换为Redux。我有主容器 - App.js和他的下一个方法:
handleDone () {
this.setState({ showPLock: false });
}
render () {
return (
<div className="mainContainer">
{this.props.children}
{
this.state.showPLock
? <PCode handleDone={this.handleDone.bind(this)}/>
: null
}
</div>
);
}
在第一个启动应用程序showPLock:true。 代码PCode:
class PCode extends Component{
constructor (props) {
super(props);
this.state = {
passcode: ''
};
}
render () {
//something doing
}
}
PCode.contextTypes = {
router: PropTypes.object.isRequired,
store: PropTypes.object.isRequired
};
PCode.propTypes = {
dispatch: PropTypes.func.isRequired,
};
function mapStateToProps(stateStore) {
const { authReducer } = stateStore;
if (authReducer.pcode !== null) {
//something return
}
}
export default connect(mapStateToProps)(PCode);
调用mapStateToProps时出现问题。在击中组件时不会立即调用它。因此,如果我调用渲染内容,例如:
const { data } = this.props;
当然会发出一个未定义的。
为什么第一次调用组件时没有调用mapStateToProps?
答案 0 :(得分:1)
是的,mapStateToProps
应该在首次安装组件时执行。
要检查两件事:
mapStateToProps
返回一个对象,即使它只是一个空的{}
PCode
类可能应该延伸React.Component
:class PCode extends React.Component {}
答案 1 :(得分:-2)
我正在努力。我说为了简化这个问题,我扩展了React.Component ......不是这个检查问题!