繁体   English   中英

无法访问由Redux MapStateToProps修改的React道具

[英]Can't access React props modified by Redux MapStateToProps

尝试访问this.props.state值时未定义

import React, { Component, PropTypes } from 'react';
import { connect } from 'react-redux';
import * as actions from '../actions';

const mapStateToProps = ({ movies }) => ({
  state: movies,
});

class App extends Component {

  componentDidMount() {
    this.props.addMovie({ title: 'Movie' }); //redux action
  }

  render() {
    const { state } = this.props;
    console.log(state.test);       //Object {title: "Movie"}
    console.log(state.test.title); //Uncaught TypeError: Cannot read property 'title' of undefined
    return (
      <div>Hello {state.test.title}!</div> //doesn't work
    );
  }
}

export default connect(mapStateToProps, actions)(App);

在redux完成动作之后,我在组件道具中有了状态对象

Redux开发工具

我可以从Chrome DevTools $r.props.state.test.title访问它,但不能从渲染功能访问它

例如,我可以从this.props.params.movieID获取值,但无法获取由mapStateToProps修改的任何参数

如何将this.props.state.test.title值放入div?

在渲染函数内部,检查标题是否未定义,因为在解析redux操作之前已调用了渲染函数。 更新状态并渲染组件后,状态将第二次显示。

render() {
  const { state } = this.props;
  console.log(state.test);
 if(state.test && state.test.title){
   console.log(state.test.title); 
    return (
     <div>Hello {state.test.title}!</div>
   )
} else {
   return (
    <div>No movies listed</div>
  );
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM