我想知道如何在Outlook外接程序中使用API调用填充后呈现一个插件。它不会显示在屏幕上。
基本示例:
const App () => {
let contactDropdown = <></>;
(async () => {
await Office.onReady();
const contacts = await getContacts();
contactDropdown = buildDropdown(contacts);
})();
const buildDropdown = (contacts) => {
//e.g.:
// contacts = [
// { value: 1, text: "Tim" },
// { value: 2, text: "Fred" }
// ];
return (
<div>
<label>Choose a Contact</label>
<select>
{contacts.map((option) => (
<option key={option.value} value={option.value}>
{option.text}
</option>
))}
</select>
</div>
);
};
return (
<div>
{contactDropdown}
</div>
);
}
字符串
我需要先使用useEffect
和state来加载数据吗?我试过了,但它不起作用。
const [contacts, setContacts] = useState([]);
useEffect(() => {
setContacts(getContacts());
}, []);
const getContacts = async () => {
//api call here
};
型
1条答案
按热度按时间w51jfk4q1#
首先,您不必等待获取数据来定义EJB组件。
其次,在尝试使用state时,您将promise存储在state中,而不是实际结果。
概念验证:
字符串
为了简洁起见,上面的组件执行数据的获取,但这可能并不理想。
更有意义的做法可能是将该状态提升到父组件中,并在获取联系人后将其作为一个 prop 传递给代理。
下面是它可能的样子(仍然是最基本的,但演示了原理):
的数据