React:如何将返回的函数值传递给父组件?

时间:2019-03-18 17:39:09

标签: javascript reactjs return gatsby react-props

有新反应,所以这可能很明显,但是我有一个函数可以计算用户与组件的经度(从状态)之间的距离,然后用returnDistance()返回值。

export default class Space extends React.Component {
    render() {
        const userLat = this.props.userLat,
        userLng = this.props.userLng;

        let lat = this.props.node.latitude,
            lng = this.props.node.longitude;

        function getDistance(lat1, lon1, lat2, lon2) {
            var R = 6371; // km
            var dLat = toRad(lat2 - lat1);
            var dLon = toRad(lon2 - lon1);
            var lat1 = toRad(lat1);
            var lat2 = toRad(lat2);

            var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);
            var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
            var d = R * c;
            return d;
        }

        // Converts numeric degrees to radians
        function toRad(Value) {
            return Value * Math.PI / 180;
        }

        function returnDistance() {
            return getDistance(userLat, userLng, lat, lng).toFixed(1);
        }

        return (
            <Component>
                {userLat ?
                <ComponentDistance>
                    {returnDistance()}
                    <span>km</span>
                </ComponentDistance>
                : null }
            </Component>
        )
    }
}

当我无法在render中设置状态或道具时,如何将returnDistance()的值传递给父组件?

谢谢

2 个答案:

答案 0 :(得分:2)

拥有一个名为 def function(start_date, end_date): a = ...(constructing df) b = ...(constructing df) c = ...(constructing df) return a, b, c 之类的道具,然后在孩子中执行以下操作:

onCalculateDistance

然后在父级中,您可以执行以下操作:

function returnDistance() {
        const dist = getDistance(userLat, userLng, lat, lng).toFixed(1);
        this.props.onCalculateDistance(dist);
        return dist;
    }

答案 1 :(得分:0)

通常,如果需要在其中访问其结果,则可以将returnDistance()函数保留在父组件中。然后,将其传递到将被调用的组件的props中。