【发布时间】:2020-12-13 07:00:38
【问题描述】:
我正在尝试分配从父组件获得的道具并将其分配给子组件中的状态(因为我想操作道具数据,所以我首先将其分配给状态)。
当我记录状态变量时,它作为一个空数组出现,但是当我在渲染中创建一个新变量并将道具分配给它并记录它时。它确实显示了我需要的数据。另外,当我登录this.props 时,我肯定可以看到 props 包含我需要的数据。
我之前已经多次指定 props 来声明,所以我不确定这次有什么不同以至于它不起作用。
我将 props 传递给子组件的父组件:
<ShowAvailableTimeslots onClick={this.getSelectedTimeslot} allTimeSlots={this.state.AvailabletimeSlots} />
我尝试将道具分配给状态的子组件:
class ShowAvailableTimeslots extends Component {
constructor(props) {
super(props)
this.state = {
sliceEnd: 5,
sliceStart:0,
selectedSlotValue: "",
timeSlotArr: this.props.allTimeSlots,
// timeSlotSlice: timeSlotArr.slice(this.state.sliceStart, this.state.sliceEnd)
}
}
handleTimeSlotClick = (timeSlot) => {
this.setState({ selectedSlotValue: timeSlot }, () => {
this.props.onClick(this.state.selectedSlotValue)
console.log('time slot value', timeSlot)
});
}
previousSlots =()=>{
var test;
}
forwordSlots =()=>{
var test;
}
render() {
var timeSlotArrRender = this.props.allTimeSlots;
return (
<React.Fragment>
{console.log("state", this.state.timeSlotArr)} // --> doesn't show data
{console.log("props", this.props)} // --> does show data
{console.log("render variable", timeSlotArrRender )} // --> does show data
<button className="button btn" onClick={() => this.previousSlots()} disabled={this.state.sliceStart === 0}>left</button>
{/* {this.state.timeSlotArr.map(timeSlot => <a className="timeslot btn " key={timeSlot} value={timeSlot} onClick={() => this.handleTimeSlotClick(timeSlot)}>{timeSlot}</a>)
} */}
<button className="button btn">right</button>
</React.Fragment>
)
}
}
export default ShowAvailableTimeslots
【问题讨论】:
标签: javascript reactjs state parent-child react-props