Javascript getInitialState()替换现有状态。如何在React中传递现有状态?

Javascript getInitialState()替换现有状态。如何在React中传递现有状态?,javascript,reactjs,Javascript,Reactjs,我正在制作一些按钮,根据数据库中的状态显示某个类 我已通过发射器将API结果传递到我的状态,使用以下命令: constructor(props) { super(props); this.state = { tickets: [], user: [] }; this.onGetAllTickets = this.onGetAllTickets.bind(this); this.onGetCurrentUser = this.on

我正在制作一些按钮,根据数据库中的状态显示某个类

我已通过发射器将API结果传递到我的状态,使用以下命令:

  constructor(props) {
    super(props);
    this.state = {
      tickets: [],
      user: []
    };
    this.onGetAllTickets = this.onGetAllTickets.bind(this);
    this.onGetCurrentUser = this.onGetCurrentUser.bind(this);
  }
但是,我必须使用
getInitialState()
选项在按钮中设置一个新状态。我的按钮如下所示:

const AssignButton = React.createClass({
  getInitialState() {
    return {
      isPressed: false,
      completeStatus: "Assign"
    };
  },
  handleClick() {
    this.setState({
      isPressed: true,
      completeStatus: "Assigned",
    });
  },
  render () {
    var assignClass =  'ui orange right floated button assign';

    //THIS IS WHERE I AM TRYING TO CHECK TICKET STATUS 
    if(this.state.tickets.status === 2) assignClass = 'ui green right floated button done disabled';
    else if(this.state.isPressed) assignClass += ' disabled';
    return <button className={assignClass} onClick={this.handleClick}>{this.state.completeStatus}</button>;
  }
});
const AssignButton=React.createClass({
getInitialState(){
返回{
我说:错,
完成测试:“分配”
};
},
handleClick(){
这是我的国家({
我说:是的,
完成测试:“已分配”,
});
},
渲染(){
var assignClass='ui橙色右浮动按钮assign';
//这是我试图检查票证状态的地方
如果(this.state.tickets.status==2)assignClass='ui绿色右浮动按钮已禁用';
else如果(this.state.isPressed)赋值类+='disabled';
返回{this.state.completeTastus};
}
});
但是,传递
this.state.tickets.status
会导致以下结果:

ticketesboard.js:123未捕获(承诺中)类型错误:无法读取未定义(…)的属性“状态”

我假设这是因为我的状态被
getInitialState()
方法覆盖了

this.state.tickets.status
等在
AssignButton
组件之外工作


如何将票据从原始状态传递到
getInitialState()
方法

问题是您试图访问不同组件的状态。您的e地址
this.state.tickets.status
未在分配按钮中声明票证状态

你有两个组件。售票板和分配按钮。 您在TicketBoard中设置票证状态,并尝试在AssignButton中访问它

尝试通过props将tickets状态传递给assign按钮,并将您的条件从
this.state.tickets.status
更改为
this.props.tickets.status

此外,请确保在空数组上调用.status时不会出现问题…

问题是您试图访问其他组件的状态。您的e地址
this.state.tickets.status
未在分配按钮中声明票证状态

你有两个组件。售票板和分配按钮。 您在TicketBoard中设置票证状态,并尝试在AssignButton中访问它

尝试通过props将tickets状态传递给assign按钮,并将您的条件从
this.state.tickets.status
更改为
this.props.tickets.status

此外,确保在空数组上调用.status时不会出现问题…

代码的第一部分(声明状态的地方)是否在父级中“活动”?如果是这样的话,它将不起作用。@Alex在它下面的所有部分都位于导出默认类ticketesboard extensed React.Component下。Component此组件(这是父组件)。代码的第一部分(声明状态的地方)是否在父组件中“活动”?如果是这样的话,它将不起作用。@Alex在它下面的所有文件都位于
导出默认类ticketesboard extensed React.Component
这个组件(这是父组件)。但是我可以删除
getInitialState()中的
ticket.status
?我已经尝试了
ticket:this.state.ticket
和其他几次尝试,但我没有得到它。只是为了验证,
ticketesboard
是父组件。这就是为什么我有点困惑!伙计,再看一遍文件。状态为每个组件。您在父对象上设置了一个状态,然后尝试在子对象中访问它—这样做是行不通的。如果您想让孩子知道家长的状态,请使用道具将数据传递给孩子。如果您愿意,请将代码放在JSFIDLE上,我会在那里帮助您进行适当的调整。@alexunder自启动此项目以来,我不需要使用道具。因此,我们不能真正理解使用道具的好处。回去,看,用,理解。为这个建议干杯。但是我可以在
getInitialState()
中删除
票证的状态吗?我已经尝试了
ticket:this.state.ticket
和其他几次尝试,但我没有得到它。只是为了验证,
ticketesboard
是父组件。这就是为什么我有点困惑!伙计,再看一遍文件。状态为每个组件。您在父对象上设置了一个状态,然后尝试在子对象中访问它—这样做是行不通的。如果您想让孩子知道家长的状态,请使用道具将数据传递给孩子。如果您愿意,请将代码放在JSFIDLE上,我会在那里帮助您进行适当的调整。@alexunder自启动此项目以来,我不需要使用道具。因此,我们不能真正理解使用道具的好处。回去,看,用,理解。为这个建议干杯。