我正在从 迁移FlatList
到FlashList
,我已将我的 expo sdk 从 升级到 ,45.0.0
并且46.0.0
在实施FlashList
shopify/flashlist 文档中的 as 时,我收到以下警告
FlashList 的渲染大小不可用。高度或宽度太小 (<2px)。请确保列表的父视图具有有效的大小。FlashList 将与父级的大小相匹配。
它工作得很好FlatList
,只是从 api 加载数据需要花费很多时间,,,这就是为什么我决定切换到FlashList
. 有人知道如何解决这个问题吗?如有任何帮助,我们将不胜感激。这是我的代码
渲染项函数
const renderItem = ({ item: product }) => {
return (
<Product
category={product.bp_product_category}
itemname={product.bp_product_name}
price={product.bp_product_selling_price}
mass={product.bp_product_mass}
unitofmass={product.bp_product_unit_of_mass}
productID={product._id}
/>
);
};
const keyExtractor = useCallback((item) => item._id, []);
const filteredproducts = products.filter((product, i) =>
product.bp_product_name.toLowerCase().includes(search.toLowerCase())
);
Run Code Online (Sandbox Code Playgroud)
FlashList 本身
<View style={{flex:1, width:'100%', height:'100%'}} >
<FlashList
keyExtractor={keyExtractor}
data={filteredproducts}
renderItem={renderItem} …
Run Code Online (Sandbox Code Playgroud) 我一直在尝试为100多种产品获取metafields,这意味着我必须为每种产品分别进行100次api调用.如果有一种方法可以在一个xml文件中获取所有产品的所有元数据,就像变体附加到产品的方式一样.因此,通过一次api通话,我可以获取所有100种产品,而不是为每种产品分别进行100次api调用.任何帮助表示赞赏.
我有一个产品句柄列表,我想根据这个句柄获取产品.似乎没有办法告诉Liquid去购买单一产品.我可以使用API执行此操作,但如果我使用API,那么我必须使用JavaScript,并且我必须复制已经在代码段中的HTML,并复制逻辑.
我正在尝试的减少版本:
{% assign handle = 'my-product-handle' %}
{% assign product = products.handle %}
{% include 'snippet-product-item' %}
Run Code Online (Sandbox Code Playgroud) 我不确定这是否是正确的论坛,因为我没有具体的开发问题 - 但是这里是:)
我正在考虑创建一个Shopify应用程序,以便在我的Shopify商店的前端使用.我一直在浏览Shopify文档,API看起来很棒 - 使用应用程序(至少是私有应用程序)启动和运行看起来很轻松.
但是我在创建应用程序后如何使用该应用程序?假设我使用单个控制器(Home - > Index)创建一个新的ASP.NET MVC站点,该站点返回一个简单地说"Hello World"的视图.(将来控制器当然会调用API,而View会用数据做出惊人的东西等)
现在我想在Shopify商店的前端使用这个神奇的网站作为应用程序.我是怎么做到这一点的?:)
我可以找到很多关于如何调用API以及如何在Shopify管理员中设置私有应用程序的教程 - 但我如何在我的前端实际使用这个应用程序?我不是在寻找有关公共应用程序和OAuth等的解释(尽管这方面的教程也很棒) - 但对于初学者来说只是一个关于创建和使用私有应用程序的教程.
任何伟大的教程/ Udemy课程/ Pluralsight视频等在那里我错过了?
多谢你们.
我试图使用JS替换输入字段中的一些文本,但视图模型每次都会覆盖我的命令.这是我开始的HTML:
<td class="new-variants-table__cell" define="{ editVariantPrice: new Shopify.EditVariantPrice(this) }" context="editVariantPrice" style="height: auto;">
<input type="hidden" name="product[variants][][price]" id="product_variants__price" value="25.00" bind="price" data-dirty-trigger="true">
<input class="mock-edit-on-hover tr js-no-dirty js-variant-price variant-table-input--numeric" bind-event-focus="onFocus(this)" bind-event-blur="onBlur(this)" bind-event-input="onInput(this)">
</td>
Run Code Online (Sandbox Code Playgroud)
我运行这个JS:
jQuery('#product_variants__price').siblings().removeAttr('bind-event-focus');
jQuery('#product_variants__price').siblings().removeAttr('bind-event-input');
jQuery('#product_variants__price').siblings().removeAttr('bind-event-blur');
jQuery('#product_variants__price').siblings().focus()
jQuery('#product_variants__price').siblings().val("34.00");
jQuery('#product_variants__price').val("34.00");
Run Code Online (Sandbox Code Playgroud)
我留下了以下HTML:
<td class="new-variants-table__cell" define="{ editVariantPrice: new Shopify.EditVariantPrice(this) }" context="editVariantPrice" style="height: auto;">
<input type="hidden" name="product[variants][][price]" id="product_variants__price" value="34.00" bind="price" data-dirty-trigger="true">
<input class="mock-edit-on-hover tr js-no-dirty js-variant-price variant-table-input--numeric">
</td>
Run Code Online (Sandbox Code Playgroud)
问题是,每次单击输入字段时,该值都将恢复为页面加载时的值.
我也尝试在父td中运行命令以及我的值更改,以模拟变体的编辑并防止默认但没有成功:
jQuery('#product_variants__price').siblings().bind('input', function (e) {
e.preventDefault();
return false;
});
jQuery('#product_variants__price').siblings().bind('focus', function (e) {
e.preventDefault();
return false;
});
jQuery('#product_variants__price').siblings().focus()
jQuery('#product_variants__price').siblings().val("£34.00"); …
Run Code Online (Sandbox Code Playgroud) 我有点像菜鸟,并且不怕承认,我正在研究这个项目作为学习经验,以便通过php和服务器端脚本/处理来改善.
我正试图想出一种方法来使用Shopify,并在每次从我的Shopify购物车完成订单时同时更新关闭服务器数据库.例如,有人从我的在线商店购买了一些东西,我希望它能够更新我的家庭数据库库存,以显示它现在少了一件商品.
我得出的结论是,最好的方法是设置一个webhook通知,将HTTP POST请求发送到我的服务器,然后我让我的服务器捕获POST并将其解析为XML.然后,我将通过将更新我的数据库的php脚本读取XML.
我没有问题的PHP,但我似乎无法弄清楚是如何抓住我的服务器上的webhook.Webhook要求我提供一个发送POST请求的URL,我的问题是你; 什么是网址?
我做了一些研究,发现你可以通过html,php,Access-Control-Allow-Origin等多种方式捕获POST请求.但是,由于我还是新手,我不知道真的明白如何做到这些.我尝试过使用HTML隐藏的动作表单,但似乎无法捕获XML.
我想要做的就是让webhook发送它的POST请求,并将其作为.xml捕获.这样我就可以在每天结束时读取xml,并相应地更新数据库.
如果您能想出更好或更简单的方法,请务必向我提出建议.我希望这是安全的,所以像Access-Control-Allow-Origin这样的方法是不可能的.
tl; dr:我在服务器上需要做什么来捕获webhook通知?我应该在服务器上使用什么脚本来提供给webhook?如何编写回调脚本?
我查看了Shopify产品API,但结果似乎没有返回产品页面URL.在标题上进行一些转换后,URL看起来像是结果.是否有可靠的定义逻辑用于此方法或任何其他方法来获取产品页面URL?
试图获取集合的元数据.我有收藏品ID.根据Shopify的API文档,我应该能够获得集合的元数据,但我没有看到它的参数.
码:
getShopifyCollectionMetafields: function(collection_id) {
// GET /admin/products/#{id}/metafields.json
var meta = ShopifyAPI.getProductMetafields({id: collection_id});
console.log(meta)
}
Run Code Online (Sandbox Code Playgroud)
这返回一个空数组(这是有道理的,我正在尝试传递一个集合ID,它需要一个产品ID - 但不知道该怎么做).
我查看了不同的订单webhooks,并想知道它们什么时候被触发.这是我到目前为止所发现的:
orders/updated
,无论何时以任何方式更改订单,包括创建订单时(甚至在授权和orders/create
被解雇之前),关闭或取消订单orders/create
在用户授权付款时触发orders/paid
当商家接受付款时被解雇orders/fulfilled
当商家履行订单时被解雇orders/cancelled
订单取消时触发因为orders/updated
每当其他挂钩被触发时也会触发,似乎添加更新webhook就足以保持本地数据存储同步到商店数据.但是,我想确认我对这些webhooks的理解是正确的,即orders/updated
只要订单以任何方式发生变化,它就会被触发.而其他webhooks只针对更具体的用例?
我希望从Shopify商店卸载应用程序后删除PHP应用程序中的商店详细信息,这些应用程序在安装应用程序时存储在数据库中,
现在我得到了一些解决方案,如下所示:
$create_webhook = array('webhook'=>array(
'topic'=> 'app/uninstalled',
'address'=>'{{ mydomainname}}/uninstalled.php',
'format'=> 'json'
));
$request_update = $shopify('POST /admin/webhooks.json ', array(), $create_webhook);
Run Code Online (Sandbox Code Playgroud)
但是我们可以在安装时或任何其他时间创建此webhook吗?