小编Dan*_*ton的帖子

为什么我的自定义钩子被调用了这么多次?

我正在尝试实现一个自定义挂钩来为应用程序提供访客购物车。我的钩子环绕着useMutationApollo的钩子,它将购物车 ID 保存在 cookie 中,同时还提供了一个“重置”购物车的功能(基本上,在下订单时删除 cookie)。

代码时间!(为简洁起见省略了一些代码):

export const useGuestCart = () => {
    let cartId;
    const [createCart, { data, error, loading }] = useMutation(MUTATION_CREATE_CART);
    console.log(`Hook!`);

    if (!cartId || cartId.length === 0) {
        createCart();
    }
    if (loading) {
        console.log(`Still loading`);
    }
    if (data) {
        console.log(`Got cart id ${data.createEmptyCart}`);
        cartId = data.createEmptyCart;
    }

    const resetGuestCart = useCallback(() => {
        // function body here
    });

    return [cartId, resetGuestCart];
};
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我只是使用let [cartId, resetCart] = useGuestCart();.

当我运行我的单元测试(使用 Apollo 提供模拟突变)时,我看到钩子被调用了几次,输出看起来像这样:

console.log …
Run Code Online (Sandbox Code Playgroud)

javascript react-hooks react-apollo-hooks

5
推荐指数
1
解决办法
1677
查看次数

使用 Apollo React 钩子重新获取查询

我正在尝试新的 Apollo React Hooks,并建立了一个小型商业示例。

function App() {
    const [cartId, setCartId] = useState('V1bvif5UxQThb84iukrxHx9dYQg9nr8j');

    const [removeItem, {loading: mutationLoading}] = useMutation(REMOVE_ITEM, {
        refetchQueries: [{query: CART_DETAILS, variables: {cartId}}]
    });
    const [addToCart] = useMutation(ADD_TO_CART, {
        refetchQueries: [{query: CART_DETAILS, variables: {cartId}}]
    });

    const {data, loading, error} = useQuery(CART_DETAILS, {
        variables: {cartId}
    });

    if (data && data.items) {
        console.log(`We have data`, data);
    }

    const handleRemove = itemId => {
        console.log(`Removing item with id ${itemId}`);
        removeItem({
            variables: {cartId, itemId}
        });
    };
    if (error) {
        console.log(`Some error happened`, error); …
Run Code Online (Sandbox Code Playgroud)

apollo react-hooks

4
推荐指数
1
解决办法
4051
查看次数

JPA 2.0 - 本机查询中的 NVARCHAR

我正在处理的项目具有以下设置:JPA 2.0(Hibernate 4 实现)和 SQL Server 2008 R2。

我需要从 SQL 视图中选择一些数据。为了做到这一点,我使用了本机查询,但我遇到了 NVARCHAR 字段的一些问题。基本上,当使用这段代码时:

 String sql = "SELECT v.text_field as address FROM SOME_CUSTOM_VIEW v
 Query q = entityManager.createNativeQuery(sql,"ItemDetailsMapping");
 List<Object[]> result = q.getResultList();
Run Code Online (Sandbox Code Playgroud)

ItemDetailsMapping 声明如下:

@SqlResultSetMapping(name = "ItemDetailsMapping", columns = { @ColumnResult(name = "address") })
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

org.springframework.orm.hibernate3.HibernateSystemException: No Dialect mapping for JDBC     type: -9; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
Run Code Online (Sandbox Code Playgroud)

类型 -9 实际上是 NVARCHAR 类型,我们在整个应用程序中广泛使用它,当我们使用非本机查询时它可以完美地工作。为什么它不能与本机查询一起使用?我什至使用了自定义方言并注册了类型,但它仍然无法正常工作。

非常感谢你的帮助

java hibernate nvarchar sql-server-2008-r2 jpa-2.0

3
推荐指数
1
解决办法
6014
查看次数