我使用这个代码来添加值到数组,但我记录了一些额外的方括号。我希望这个作为地图进入Firebase。下面是一些代码和日志示例。
const [playgroundFilters, setPlaygroundFilters] = useState([{ id: 1 }]);
const updateItem = (id, whichvalue, newvalue) => {
var index = playgroundFilters.findIndex((x) => x.id === id);
let g = playgroundFilters[index];
g[whichvalue] = newvalue;
if (index === -1) {
// handle error
console.log('no match');
} else
setPlaygroundFilters([
...playgroundFilters.slice(0, index),
g,
...playgroundFilters.slice(index + 1),
]);
console.log(playgroundFilters);
};
onPress={(value) => updateItem(1, 'PG - Fenced', value)}
options={[
{ label: 'No Fence', value: '' },
{ label: 'Partially', value: 'Partially fenced' },
{ label: 'Fully', value: 'Fully fenced' },
]}
以上代码记录如下:
LOG [{"PG - Fenced": "Partially fenced", "id": 1}]
在firebase中显示为数组中的映射。我希望它像这样在firebase中显示为map
{"PG - Fenced": "Partially fenced", "id": 1}
将其转换为字符串并删除方括号只是将其作为字符串发送到Firebase而不是map。
初始状态useState([{ id: 1 }])
为数组。在setPlaygroundFilters
中对它执行的操作将生成一个数组。
你应该自己把它转换成一个映射。我不确定你想要什么样的输出,所以如果你分享它,它将更容易编写一个函数。