【发布时间】:2021-09-14 07:05:05
【问题描述】:
我不太擅长 react js。我只是想创建一个“全局值”,让那个父级的孩子看到这个值,所以我找到了 useContext 允许共享值。所以我想使用 (useState) 所以我可以从子级设置它,这样它就可以在我的父级中单独呈现,但似乎不起作用..它改变了值但没有在父级中呈现它(我是如何计算出来的..在运行时,我更改了值,然后删除了 <Home video = {video}/> 并再次将其放置以显示我的视频)
这里是代码
const videoIDContext = React.createContext({
video:"",
setVideo: () => {}
});
function UserMain() {
const [video, setVideo] = useState("");
return (
<Grid container direction="column" style={{ height: "100%" }}>
//some code
<videoIDContext.Provider value = {[video,setVideo]}>
<Home video = {video}/>
</videoIDContext.Provider >
</Grid>
);
}
function Home({ video, data, reel, Tips, upload }) {
return (
//some code
<Grid item xs="12" md="5" justify="space-around"
alignItems="center">
<UploadElements />
</Grid>
<Grid
container
item
xs={12}
justify="space-evenly"
alignItems="stretch"
style={{ margin: "10px" }}
spacing={2}
>
<MainVideo videoSrc={video} videoName="Nature" />
</Grid>
);
}
function UploadElements() {
let videoContext1 = useContext(videoIDContext)
const submit = async event => {
event.preventDefault()
// (postVideoAndPpt) this function used to send data to my back end and save my video path in my data base it works fine
const resultVideo = await postVideoAndPpt({ppt: file , video: videoFile, Name: Name});
console.log(resultVideo);
videoContext1.setVideo(resultVideo.videoPath)
setVideos([resultVideo.video, ...videos])
// console.log(pptFiles);
// console.log(videos);
}
return (
<div className="floatingDiv" style={{ height: "200px" }}>
<form onSubmit={submit} style={{ width: "100%" }}>
// my inputs works fine .. just to summarize it its 2 input of type file that user
// can upload video in it
</form>
</div>
);
}
我在这里有什么遗漏吗?
【问题讨论】:
标签: reactjs state setstate use-context