我正在为使用 office-ui-fabric-react 库构建的 SharePoint 创建自定义编辑表单。我最近在我的编辑表单中添加了一个人员选择器,并意识到查找列不会在正常的“获取”REST 调用中返回。似乎您必须为每个人员选择器进行选择和扩展。
我之前设置的 get 请求旨在通过自动调用列表名称和当前项目 ID 来尽可能地重复使用。在这一点上,我觉得我正在做一些艰难的事情,并想看看其他人是否有使用 React SharePoint 编辑表单中的人员选择器列的经验。
我当前设置列值的工作流程如下。
- 编辑表单 componentDidMount 启动对所有当前列值的获取请求
- 加载的值设置为状态
- Edit 表单上的子组件将 this.state.loadedValues 作为 prop 值向下发送
- 在子组件中,值设置为 this.props.value
目前看来,如果我想用当前值填充我的 React 组件,我必须首先对通常的列进行正常的“获取”REST 调用,然后进行单独的 REST 调用并为每个人选择器进行选择和展开我添加到我的表格中。有没有更好的方法来做到这一点?
这是我拥有的通用获取请求:
let req = new XMLHttpRequest;
return new Promise((resolve, reject) => {
req.open('GET', `${_spPageContextInfo.webAbsoluteUrl}/_api/Web/Lists/GetByTitle('${LIST_NAME}')/Items(${ITEM_ID})`, true);
req.setRequestHeader('Content-Type', 'application/json;odata=verbose');
req.setRequestHeader('Accept', 'application/json;odata=verbose');
req.onload = async () => {
// alert(req.status);
if (req.status === 200) {
let response = JSON.parse(req.response);
resolve(response.d);
} else {
reject(Error(req.statusText));
}
};
req.onerror = () => {
console.log(`Error: ${req.status}`);
reject(Error('Network Error'));
};
req.send(null);
});