React Native Action Button - 无法动态添加按钮

Posted

技术标签:

【中文标题】React Native Action Button - 无法动态添加按钮【英文标题】:React Native Action Button - Unable to Add buttons Dynamically 【发布时间】:2020-09-19 16:04:33 【问题描述】:

无法动态添加 ActionButton 项。

我有以下设置 --

<ActionButton>
    <ActionButton.item name=constant_btn1 />
    <ActionButton.item name=constant_btn2 />
</ActionButton>

我想在此列表中添加动态按钮。 (列表从后端接收)

我创建了一个返回这些按钮视图的函数。

getDynamicBtns() 
    return dynamicButtonsList.map(item, key) => (
        return <ActionButton.item name=item.btnName />;
    );

我也是这样用的-->

<ActionButton>
    <ActionButton.item name=constant_btn1 />
    <ActionButton.item name=constant_btn2 />
    this.getDynamicBtns()
</ActionButton>

所以这是渲染我的常量按钮,但不是动态按钮

编辑 - 我从getDynamicBtns() 函数返回地图,并在render() 中调用函数调用。这只是我编写的一些简化示例代码。

EDIT2 - 为防止混淆,请更改原始问题的代码。

【问题讨论】:

尝试console.log dynamicButtonsList 数组来检查它是否不为空 @zb22 非常感谢!检查后我知道 的孩子有点不正确。我会发布一个答案来更好地解释它。 【参考方案1】:

您不会在 getDynamicBtns 函数中返回任何内容。您应该返回地图的结果:

getDynamicBtns() 
    return dynamicButtonsList.map(item => <ActionButton.item name=item.btnName />)

【讨论】:

对不起@Ariel Perez。我正在这样做。没有在问题中添加它。将更新。但这并不能解决问题。【参考方案2】:

我想通了。 问题是 .map 函数返回一个对象数组。

所以最终要渲染的元素是一个 React 元素 ActionButton

无论我的动态列表的大小如何,ActionButton 都只有 3 个孩子。

ActionButton.children: [
    staticButton1,
    staticButton2,
    [dynamicButton1, dynamicButton2, dynamicButton3, ....]
];

作为解决方案,我将它们放入单独的列表中,并找到了列表的联合。 然后在&lt;ActionButton&gt;中渲染列表

类似的东西 ->

let listA = [<ActionButton.Item name='staticBtn1.name' />];

let listB = this.getDynamicBtns();

let finalList = _.union(listA, listB);

然后将其渲染为-->

<ActionButton>
    finalList
</ActionButton>

【讨论】:

以上是关于React Native Action Button - 无法动态添加按钮的主要内容,如果未能解决你的问题,请参考以下文章

dispatchin action redux 后导航与 react native

Redux 管理React Native数据

React Native Redux:动作分派,返回结果

如何将更改的状态发送到 react-native 中的组件?

在JSP中有一个butto按钮,怎么把参数通过点击onclick()事件,传入Struts2中的Action的具体方法中。

react native 路由跳转后页面不刷新问题