我有一个称为数据库的状态变量,该变量返回一个对象和一个保存数据库名称的数组,如下所示,这是一个下拉菜单。我希望能够从数据库状态数组中获取值(object_name)并将它们从addToProduction函数附加到数据库数组的末尾。数据库状态变量也位于另一个组件中。
这是从数据库状态变量返回的数据:
这是addToProduction函数中的数据:
这是函数addToProduction ....选中此复选框时,它会将值添加或删除到productionDatabaseState:
const [productionDatabaseData, setProductionDatabaseData] = useState([])
const addToProduction = ({ target }, { id, databases }) => {
setProductionDatabaseData((previousState) => {
let newState = [...previousState]
if (target.checked) {
newState = [
...newState,
{ unit_test_id: id, databases }
]
} else {
const i = newState.findIndex(({ unit_test_id }) => unit_test_id === id)
if (i !== -1) newState.splice(i, 1)
}
return newState
})
}
useEffect(() => {
console.log("databaseArr", productionDatabaseData);
}, [productionDatabaseData]);
我的预期输出应为:
databaseArr:
基本上,数据库状态数组会附加到databaseArr的末尾。
更新的代码:
const addToProduction = ({ target }, { id, databases }) => {
setProductionDatabaseData((previousState) => {
let newState = [...previousState]
if (target.checked) {
newState = [
...newState,
{ unit_test_id: id, databases }
]
} else {
const i = newState.findIndex(({ unit_test_id }) => unit_test_id === id)
if (i !== -1) newState.splice(i, 1)
}
return newState
})
const appendedArrays = [productionDatabaseData, ...props.database.recent_objects_modified_by_user.map(({object_name}) => object_name)]
useEffect(() => {
console.log("databaseArr", appendedArrays);
}, [productionDatabaseData, appendedArrays]);
}
更新v2:
const [addRemoveDatabase, setAddRemoveDatabase] = useState('prod.auiag.corp/iadpprod')
答案 0 :(得分:0)
我不知道recent_objects_modified_by_user
数据的存储位置,但是您可以执行以下操作,假设它是database
状态var:
const appendedArrays = [productionDatabaseData, ...database.recent_objects_modified_by_user.map(({object_name}) => object_name)]
这是通过使用传播运算符(ref here)
实现的