在React Redux中更新对象数组的单个对象键值,可以通过以下步骤实现:
下面是一个示例代码:
// reducer.js
const initialState = {
objects: [
{ id: 1, name: 'Object 1' },
{ id: 2, name: 'Object 2' },
{ id: 3, name: 'Object 3' }
]
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case 'UPDATE_OBJECT':
return {
...state,
objects: state.objects.map((obj, index) => {
if (index === action.payload.index) {
return {
...obj,
name: action.payload.newValue
};
}
return obj;
})
};
default:
return state;
}
};
// actions.js
export const updateObject = (index, newValue) => ({
type: 'UPDATE_OBJECT',
payload: {
index,
newValue
}
});
// component.js
import React from 'react';
import { connect } from 'react-redux';
import { updateObject } from './actions';
const Component = ({ objects, updateObject }) => {
const handleUpdate = (index, newValue) => {
updateObject(index, newValue);
};
return (
<div>
{objects.map((obj, index) => (
<div key={obj.id}>
<span>{obj.name}</span>
<input
type="text"
value={obj.name}
onChange={(e) => handleUpdate(index, e.target.value)}
/>
</div>
))}
</div>
);
};
const mapStateToProps = (state) => ({
objects: state.objects
});
const mapDispatchToProps = {
updateObject
};
export default connect(mapStateToProps, mapDispatchToProps)(Component);
在这个示例中,我们创建了一个包含对象数组的reducer,并定义了一个更新对象键值的action。在组件中,我们使用connect()函数将reducer中的状态映射到组件的props上,并创建了一个处理更新对象键值的函数。当输入框的值发生变化时,调用这个函数来更新对象的键值。
请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。对于更复杂的应用场景,你可能需要使用更多的reducer和action来管理状态。
领取专属 10元无门槛券
手把手带您无忧上云