我正在使用 React hooks,我有 2 个组件:
这是我的组件代码Curtain:
function Curtain(){
return(
<div className="curtain__div">
<ul className="menu__items">
<li className="about">abc</li>
<li>def</li>
<li>ghi</li>
<li>klm</li>
</ul>
</div>
);
}
export default Curtain;
Run Code Online (Sandbox Code Playgroud)
这是我的组件代码NavBar:
function NavBar(){
const [show, setShow] = useState(false);
return(
<nav className="nav__bar">
<ul className="menu">
<li className="menu__icon" onClick={() => setShow(true)}><box-icon name='menu' color="floralwhite" size="md"/>
<Curtain/>
</li>
</ul>
</nav>
);
}
export default NavBar;
Run Code Online (Sandbox Code Playgroud)
我的问题:我想Curtain在用户单击 li 时显示该组件className="menu__icon",并在用户再次单击它时隐藏该组件。
因此,我在 onSuccess 中有一些辅助行为,例如分析等。我需要传递到跟踪,不仅是查询/突变的结果(在本例中是突变),还需要传递我传入的参数。似乎只有将其附加到返回“数据”时我才能做到这一点?
export default function useProductToWishList () {
const queryClient = useQueryClient();
return useMutation(
async ({ product, email }) => {
const data = await product.addWishList({ product, email });
if (data.status === 500 || data.err) throw new Error(data.err);
return data;
},
{
onSuccess:(data) => {
const { product: response = {} } = data?.data ?? {};
queryClient.setQueryData(['products'], {...response });
analytics(response, email); // HERE. How can I get at email?
}
}
)
}
Run Code Online (Sandbox Code Playgroud)
当我不需要它来响应但需要副作用时,这样做似乎很奇怪。有什么想法吗?
return { ...data, email }
Run Code Online (Sandbox Code Playgroud) 第二次输入数字时,我没有得到阶乘的正确答案。
using System;
namespace Outcome2
{
class Program
{
static void Main(string[] args)
{
int t, FactR = 1;
do
{
Console.Write("Enter no.: ");
t = Convert.ToInt32(Console.ReadLine());
if (t < 0)
Console.WriteLine("Factorial of Negative number's can't be found ");
else if (t <= 1)
Console.WriteLine("{0}! = {1}", t, FactR);
else
{
for (int counter = t; counter >= 2; counter--)
{
FactR = FactR * counter;
}
Console.WriteLine("{0}! = {1}", t, FactR);
}
Console.WriteLine("Do you wish to quit? Y/N");
} …Run Code Online (Sandbox Code Playgroud)