我试图使用在child.js中的函数内生成的值,并将其传递给parent.js,以便我可以使用此值来过滤子级数组。
Child.js
NOT REGEXP
const returnDistance = () => {
const dist = getDistance(userLat, userLng, lat, lng).toFixed(1);
this.props.onCalculateDistance(dist);
return dist;
}
是我需要在parent.js中访问的生成的值
Parent.js
return dist
我在这里错过明显的东西吗? // The callback function
distanceChange = (dist) => {
console.log(dist)
return dist;
}
//The map to render child.js data. Im passing distanceChange as a prop.
{filteredResults.filter(({ node }) => (node.onCalculateDistance >= 0)).map(({ node }) => {
return (
<SpaceWrapper key={node.id}>
<Space node={node} onCalculateDistance={this.distanceChange} />
</SpaceWrapper>
)
}
)}
的console.log返回child.js节点的所有值,但在用作prop时返回undefined。
如何使函数运行,以便可以使用返回值过滤结果?
谢谢
答案 0 :(得分:0)
我认为您正在做的只是返回一个值,而不对此做任何事情。为了使父级存储dist
的值,它需要具有该属性。
您需要做的是将属性dist
添加到父级,然后在父级中也定义getDistance
。然后,您可以将getDistance
传递给子级,子级可以调用该函数来更新父级this.state.dist
属性。
例如,您可以拥有
parent.js
return (
<SpaceWrapper key={node.id}>
<Space node={node} getDistance={this.getDistance} />
</SpaceWrapper>
)
然后在孩子中,您可以致电this.props.getDistance()
进行更新
希望对您有帮助。