我有个按钮,点开就显示面板,点开面板就隐藏
代码,按预期工作
const Loged = () => {
const [modal, setModal] = useState(0)
const input_id = React.createRef()
const input_pass = React.createRef()
return (
<MenuLogin modal={modal}>
<div
onClick={e => {
e.stopPropagation()
setModal(1)
}}
>
Click Me
</div>
<div
onClick={e => {
e.stopPropagation()
setModal(0)
}}
>
<div onClick={e => e.stopPropagation()}>
<input ref={input_id} onClick={e => e.stopPropagation()} placeholder="id" type="text" />
<input ref={input_pass} onClick={e => e.stopPropagation()} placeholder="password" type="text" />
</div>
</div>
</MenuLogin>
)
}
其中< code>MenuLogin是一个样式化组件
const MenuLogin = styled.div`
& > div:last-child {
visibility: ${props => (props.modal ? 'visible' : 'hidden')};
opacity: ${props => (props.modal ? '1' : '0')};
}
`
但是,现在我想在这个组件之外使用setModal
,所以我要做的是将const[modal, setModal]=useState(0)
移动到父元素并将这些变量作为参数传递
所以现在我有了
const Loged = (modal, setModal) => {
...
}
使用这样的父代码
const ParentComponent = () => {
const [modal, setModal] = useState(0)
return (<ChildComponent modal={modal} setModal={setModal} />)
}
但现在,当我试图在同一位置(子组件内)隐藏元素(setModal(0)
)时,我得到React,Uncaught RangeError:Maximum call stack size exceeded
如果我做类似的事情
const ParentComponent = () => {
const [modal, setModal] = useState(0)
const changeState = (s) => setModal(s)
return (<ChildComponent modal={modal} setModal={changeState} />)
}
在得到错误(??)之前,我可以额外单击两次
阅读 React,未捕获的 RangeError:超过了最大调用堆栈大小,我会说我在这里做了一些概念上错误的事情,但找不到它是什么
编辑:我可以看到这应该是可行的(参见代码沙盒),所以我怀疑是样式化组件以某种方式导致了循环?
相同的代码看起来可以很好地处理样式化组件https://codesandbox.io/s/usestate-01-o791y
问题内容: 我正在做反应,基本上我想用工具提示制作一个按钮,现在我正在制作工具提示。我正在更改css display属性,以使其在鼠标进入和离开时不可见。但是有一个错误,我不知道该怎么办… 这是我的代码: 在控制台中,我收到此错误: 我找不到问题所在。我知道这可能与调用一个函数有关,后者又调用另一个函数。但是我在代码中看不到这样的东西,而且不确定是否全部。感谢帮助 :) 问题答案: 每当您看到从函
这是我在React中的第一个应用程序。在localhost中,一切正常,当我使用Github Pages部署时,我的应用程序(Info/Images/evenements)中的一些页面无法呈现。每次单击他们的链接访问他们时,我都会在控制台上看到一个白色页面和此错误: range error:object . tostring处超出了最大调用堆栈大小 同样,当我刷新页面时,github pages返
我在chrome上收到错误“未捕获的范围错误:超出最大调用堆栈大小”。这是我的j查询函数 从这行
我在使用jQuery ajax时遇到了一个问题。我有javascript 这段代码产生错误“UncaughtRangeError:Maximum call stack size exceeded”,我不明白为什么。我没有触发器,我使用了preventDefault和stopPropagation,但我仍然有这个错误。有人能帮我吗?
当我为图表(react-chartjs-2)获取数据时,我收到了这个错误。我实现了try/catch块,但不知道如何删除这个错误。在Edge浏览器上,我得到了CRIPT28:SCRIPT28:堆栈空间不足 这是我在组件中调用的操作。 这是连接到redux存储的组件。它在我看来一切都很好。
问题内容: 我想这意味着有一个循环引用,但是对于我的一生,我无法猜测如何解决它。 有人有主意吗? http://plnkr.co/edit/aNcBcU?p=预览 检查Chrome中的调试控制台(例如),您将看到错误。冒犯的行是 通过以下方式在控制器上对scope.map进行“ $ watched” 问题答案: 这是因为您要比较对象是否相等,而不是参考。将您的声明更改为此: