Javascript getInitialState()替换现有状态。如何在React中传递现有状态?
我正在制作一些按钮,根据数据库中的状态显示某个类 我已通过发射器将API结果传递到我的状态,使用以下命令: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
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自启动此项目以来,我不需要使用道具。因此,我们不能真正理解使用道具的好处。回去,看,用,理解。为这个建议干杯。