【发布时间】:2021-12-04 16:15:54
【问题描述】:
我试图有一个按钮,以便在按下时修改 React 上下文。 也就是说,我的上下文仅包含一个字符串列表,当 GET 请求成功时会填充该列表。 响应示例如下:
{
"message": "OK",
"status-code": 200,
"data": {
"models": [
"model1",
"model2",
"model3"
]
}
}
关于更新我的上下文的代码如下:
import React from 'react'
import {
VStack,
Button,
OrderedList,
ListItem
} from '@chakra-ui/react'
const Endpoint = 'http://localhost:5000/'
const ModelsContext = React.createContext([])
function Models() {
const [models, setModels] = React.useContext(ModelsContext)
const updateModels = async () => {
await fetch(Endpoint + 'models', {
method: 'GET',
headers: {
Accept: 'application/json'
}
})
.then((resp) => resp.json())
.then(function(data) {
setModels(data.models)
})
}
return (
<VStack>
<Button
size="sm"
colorScheme='teal'
variant='solid'
onClick={updateModels}>
Get Models List
</Button>
<ModelsContext.Provider value={{models}}>
<OrderedList>
{
models.map((name) => (
<ListItem>
{name}
</ListItem>
))
}
</OrderedList>
</ModelsContext.Provider>
</VStack>
)
}
export default Models
我还需要将结果显示为 Chakra-UI 有序列表。但是,models 变量在 <OrderedList /> 块内仍未定义,即使我定义了 React Provider Context 块。
我得到的实际错误是:<OrderedList> 位置的“TypeError:模型未定义”。
提前谢谢你!
【问题讨论】:
标签: javascript reactjs chakra-ui