Javascript 用函数对语句或语句作出反应

Javascript 用函数对语句或语句作出反应,javascript,reactjs,Javascript,Reactjs,我有一个JSX语句,它将道具呈现为: {rentRate | | quotedSeatCharges} 这样就很好了。但是,我有一个函数,在它前面加上一个货币名称/符号,对其进行格式化: const formatCost = (cost) => { if (currencySymbol) return `${currencySymbol}${cost}` return `${currencyName} ${cost}` } 我试着这样称呼它: {formatCost(租金

我有一个JSX语句,它将道具呈现为:

{rentRate | | quotedSeatCharges}

这样就很好了。但是,我有一个函数,在它前面加上一个货币名称/符号,对其进行格式化:

const formatCost = (cost) => {
    if (currencySymbol) return `${currencySymbol}${cost}`
    return `${currencyName} ${cost}`
}
我试着这样称呼它:

{formatCost(租金率| |报价seatcharges)}

这对第一个道具有效,但对第二个道具无效。

我也试过了

{formatCost(rentarate)| formatCost(quotedSeatCharges)}

这仍然适用于第一个道具,但第二个道具最终为
null

我还尝试在家长级别将这两个道具合二为一,如下所示:

rentSeatCost={rentRate}
rentSeatCost={quotedSeatCharges}
然后在子组件中:

formatCost(rentSeatCost)

但只对第一个道具有效,对第二个道具无效,就像第一次尝试一样


有没有办法用我的方法做到这一点?或者我应该放弃并找到一个替代方案吗?

打印您的currencyName和currencySymbol变量,在调用函数时不得设置它们。

您可以使用三元变量,如
rentRate?formatCost(租金):formatCost(quotedSeatCharges)

希望能有帮助


谢谢

所以我不再看子组件,而是看上面的父组件。我对子组件进行了两次渲染,结果发现我只在两个组件中的一个组件中传入了
currencySymbol
currencyName
,这就是为什么另一个组件没有同时使用两种货币


谢谢大家花时间来研究这个问题。这是我自己的疏忽。

这有什么不同吗?我可能只是手动打印出来,作为最后的手段,就像你提到的那样。只是想看看是否有办法绕过这个方法。好吧,只是在调试模式下-如果你在格式成本函数中使用console.log(currencycomsymbol),它会给你期望的符号吗?为什么你要尝试使用自己的?存在
new Intl.NumberFormat('en-US',{style:'currency',currency:'USD'})。format(2304718)==“$2304718.00”
@JaredSmith如果由我决定,我会这么做。然而,我并不是实现这个的那个人,这个项目需要货币名称。我很困惑,你的
|
有什么意义?您是说您“想同时呈现”您想同时呈现
formatCost(rentRate)
formatCost(quotedSeatCharges)
?或者您想同时使用美元和美元渲染其中一个?你能发布这个组件的代码吗?为什么不直接从formatCost函数中吐出这两个呢
formatCost(rentRate,quotedSeatCharge)
@JaredSmith不过,谢谢你的链接!如果我早些时候加入的话,这肯定会对项目的开始阶段有所帮助。非常欢迎,国际api是Javascript中没有人知道的最好的东西之一。谢谢,但我正在尝试呈现两者,而不是一个或另一个。像这样
{formatCost(rentRate)&&formatCost(quotedSeatCharges)}
?嗯。。。您应该在函数中处理两个参数查看您的第一个语句,
{rentRate | | quotedSeatCharges}
,似乎只有其中一个会呈现。但你想把两者都渲染出来?