rug*_*ugy 3 javascript reactjs react-dom carbon-design-system
新手在这里反应一下。
TLDR:我有一个名为的辅助函数,createNotification调用该函数时会使用 render() 将<ToastNotification />组件插入到container元素中。如果我使用 createPortal() 则不会附加任何内容。如果我使用渲染,尽管有多个触发器,但该组件仅添加一次。
谁能帮我弄清楚发生了什么事吗?
谢谢
助手.js
import { ToastNotification } from "carbon-components-react";
import { render, createPortal } from "react-dom";
export const createNotification = () => {
const container = document.getElementById("notificationContainer");
console.log(container); //just to check function is running and has found container
return render(<ToastNotification />, container); //works but only once, not on multiple triggers
return createPortal(<ToastNotification />, container); //doesn't render anything in container
};
Run Code Online (Sandbox Code Playgroud)
上面的函数是根据需要从其他组件调用的:
登录.js
import { createNotification } from "../../helpers";
const Login = () => {
const validateLogin = async (event) => {
createNotification();
// validation logic
performLogin();
};
const performLogin = async () => {
//axios call here
};
// main component content
return (
<>
<!-- validateLogin() called on form submit -->
</>
);
};
export default Login;
Run Code Online (Sandbox Code Playgroud)
应用程序.js
//imports
function App() {
return (
<div>
<div className="App"></div>
</div>
);
}
export default App;
Run Code Online (Sandbox Code Playgroud)
谢谢
我自己通过添加 解决了这个createPortal()问题render()。
如果有人能提供解释,我们将不胜感激。
export const createNotification = () => {
const container = document.getElementById("notificationContainer");
console.log(container);
return render(createPortal(<ToastNotification />, container), document.createElement("div"));
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9898 次 |
| 最近记录: |