Я передаю значение другому компоненту onclickEvent, но значение не передается другому компоненту и показывает нулевую ссылку.
У меня есть два компонента: DriverCards и DriverPendingOrders. Я хочу передать значение orderId из DriverCards в DriverPendingOrders.
Ниже приведены два моих рабочих компонента.
это компонент DriverCard
import React, { Component } from 'react';
import { connect } from "react-redux";
import PropTypes from "prop-types";
export default class DriverCard extends Component{
constructor(props) {
super(props);
}
render(){
let { OrderID,CID,DeliveryEst,DeliveryInstructions,DriverID,Orders,PrepInsruction,RID,Status,Total } = this.props.indOrder;
return(
<div class = "container">
<div class = "card" style = {{width:'100%',borderRadius:'2%', border: '4px solid lightgreen'}}>
<div class = "card-body" style = {{textAlign:'center'}}>
<h4 class = "card-title">{CID}</h4>
<p class = "card-text"><h5>{RID}</h5></p>
{/* <p class = "card-text"><small class = "text-muted">Last updated 3 mins ago</small></p> */}
<button type = "button" onClick = {() => {this.props.removeOrder(OrderID);this.props.showOrder.bind(this,OrderID)}}class = "btn btn-success btn-sm" style = {{width:'50%'}}>Accept</button>
<button type = "button" class = "btn btn-danger btn-sm" style = {{width:'50%'}}>Decline</button>
</div>
</div>
</div>
)
}
}
И ниже приведен компонент DriverPendingOrder, где я хочу получить идентификатор заказа, переданный из DriverCard.
import React, { Component } from 'react'
import { connect } from "react-redux";
import PropTypes from "prop-types";
import DriverPendingCard from './DriverPendingCard';
export class DriverPendingOrders extends Component{
constructor() {
super();
this.state = {
Orderslist: [
{
OrderID:parseInt("001"),
CID:123,
DeliveryEst:"",
DeliveryInstructions:"Door",
DriverID:"",
Orders:"ABC",
PrepInsruction:"Mild",
RID:"A",
Status:"",
Total:""
},
{
OrderID:parseInt("002"),
CID:456,
DeliveryEst:"",
DeliveryInstructions:"Front Door",
DriverID:"",
Orders:"BCD",
PrepInsruction:"Medium",
RID:"B",
Status:"",
Total:""
},
{
OrderID:parseInt("003"),
CID:678,
DeliveryEst:"",
DeliveryInstructions:"Gate",
DriverID:"",
Orders:"DEF",
PrepInsruction:"Spicy",
RID:"C",
Status:"",
Total:""
}
]
}
}
showOrder(OrderID) {
this.setState({ Orderslist: this.state.Orderslist.filter(order=> order.OrderID == OrderID)});
}
render(){
let dCard1 = this.state.Orderslist.map(order => {
return (
<DriverPendingCard key = {order.OrderID} showOrder = {this.showOrder.bind(this)} inOrder1 = {order}/>
)
})
return(
<div>
<ul class = "list-group">
{dCard1}
</ul>
</div>
)
}
}
export default DriverPendingOrders;



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблема в следующей части
<button type = "button" onClick = {() => {.....;this.props.showOrder.bind(this,OrderID)}}...
Function.prototype.bind() не вызывает функцию, она возвращает новую функцию, которую необходимо вызвать, если вы используете функцию-оболочку. Просто нужно вызвать showOrder после привязки.
The
bind()method creates a newfunctionthat, when called, has its this keyword set to the provided value
<button type = "button" onClick = {() => {this.props.removeOrder(OrderID);this.props.showOrder.bind(this,OrderID)()}}class = "btn btn-success btn-sm" style = {{width:'50%'}}>Accept</button>
Ниже приведены два примера vanila js, чтобы увидеть разницу.
function myFunc(){
console.info('clicked')
}
document.querySelector('button').addEventListener('click',(e) => {
myFunc.bind(this); //not called
})<button>Click me!</button>function myFunc(){
console.info('clicked')
}
document.querySelector('button').addEventListener('click',(e) => {
let temp = myFunc.bind(this) //not called
console.info(typeof temp); //function
temp(); //funtion called
})<button>Click me!</button> <DriverPendingCard key = {order.OrderID} **showOrder = {()=>this.showOrder(OrderID)**} inOrder1 = {order}/>От детей к родителям
Родитель
<ChildComp from_children = {(val)=>console.info(val)}/>
Дети
to_Parent=()=>{
this.props.from_children(val);
}
<Button onclick = {()=>to_Parent()}>
Попробуй это
Карта водителя:
<button onClick = {this.add}>Add</button>
...
...
add = () => {
this.props.passId(id);
}
DriverPendingOrder:
import { DriverCard } from "../DriverCard";
...
...
<DriverCard passId = {this.changedId}/>
...
...
changedId = passedId => {
this.setState({
id: passedId
});
};
** только хочу сказать вам, что я предлагаю