Reactjs 未捕获类型错误:无法读取属性';checkoutLineItemsAdd';shopify buy库中未定义的
我在我的react native应用程序中使用客人结账 但我面临着这个问题(见下图) 我也参考了解决方案,但我的代码中没有这种类型的问题 请帮忙,谢谢 我的代码Reactjs 未捕获类型错误:无法读取属性';checkoutLineItemsAdd';shopify buy库中未定义的,reactjs,react-native,shopify,shopify-template,Reactjs,React Native,Shopify,Shopify Template,我在我的react native应用程序中使用客人结账 但我面临着这个问题(见下图) 我也参考了解决方案,但我的代码中没有这种类型的问题 请帮忙,谢谢 我的代码 import Client from 'shopify-buy'; const client = Client.buildClient({ storefrontAccessToken: my_token, domain: my_domain }); export default class App extends C
import Client from 'shopify-buy';
const client = Client.buildClient({
storefrontAccessToken: my_token,
domain: my_domain
});
export default class App extends Component {
componentWillMount() {
client.checkout.create().then((res) => {
this.setState({
checkout: res,
});
});
}
_handleAddToBagBtn = (variantID) => {
const checkoutId = this.state.checkout.id;
const lineItemsToAdd = [{'variantID': variantID, quantity: 1}];
client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) => {
console.warn(checkout.lineItems);
});
}
}
render() {
return (
<TouchableOpacity onPress={() => this._handleAddToBagBtn(variantID)} >Click Here</TouchableOpacity>
);
}
从“shopify buy”导入客户端;
const client=client.buildClient({
storefrontAccessToken:my_token,
域名:我的域名
});
导出默认类应用程序扩展组件{
组件willmount(){
client.checkout.create()。然后((res)=>{
这是我的国家({
结帐:res,
});
});
}
_HandleadTobagbtn=(variantID)=>{
const checkout id=this.state.checkout.id;
const lineItemsToAdd=[{'variantID':variantID,数量:1}];
client.checkout.addLineItems(checkoutId,lineItemsToAdd)。然后((checkout)=>{
console.warn(checkout.lineItems);
});
}
}
render(){
返回(
点击这里
);
}
在我看来,Client.buildClient()
正在返回一个承诺。你应该这样做:
const client = Client.buildClient({
storefrontAccessToken: my_token,
domain: my_domain
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
})
您可以检查您是否得到了有效的响应或错误,然后继续相应的操作。在我看来,
Client.buildClient()
正在返回一个承诺。你应该这样做:
const client = Client.buildClient({
storefrontAccessToken: my_token,
domain: my_domain
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
})
您可以检查您是否得到了有效的响应或错误,然后继续相应的操作。我今天使用Storefont API遇到了这个问题,但解决方法如下 您需要使用与变量关联的
graphql\u api\u id
属性的Base64编码字符串,而不是直接使用variantId
数值
未编码的,如下所示:gid://shopify/ProductVariant/12434084921391
。您可以从产品对象中获取它们,但也可以直接从数值variantId
创建它们
在代码中,更改此函数:
_handleAddToBagBtn = (variantId) => {
const checkoutId = this.state.checkout.id;
const lineItemsToAdd = [{
variantId: window.btoa(`gid://shopify/ProductVariant/${variantId}`),
quantity: 1
}];
client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) = {
console.warn(checkout.lineItems);
});
}
注:我还将variantID
更改为variantID
,因为这是Shopify使用的标识符,而不是variantID
在我的例子中,这消除了错误并返回了一个GraphQL模型。希望能有所帮助。我今天使用Storefont API遇到了这个问题,但解决方法如下 您需要使用与变量关联的
graphql\u api\u id
属性的Base64编码字符串,而不是直接使用variantId
数值
未编码的,如下所示:gid://shopify/ProductVariant/12434084921391
。您可以从产品对象中获取它们,但也可以直接从数值variantId
创建它们
在代码中,更改此函数:
_handleAddToBagBtn = (variantId) => {
const checkoutId = this.state.checkout.id;
const lineItemsToAdd = [{
variantId: window.btoa(`gid://shopify/ProductVariant/${variantId}`),
quantity: 1
}];
client.checkout.addLineItems(checkoutId, lineItemsToAdd).then((checkout) = {
console.warn(checkout.lineItems);
});
}
注:我还将variantID
更改为variantID
,因为这是Shopify使用的标识符,而不是variantID
在我的例子中,这消除了错误并返回了一个GraphQL模型。希望有帮助。这里的
客户端是什么?你从哪里得到的?请看一下我更新的问题。这里的客户端是什么?你是从哪里得到它的?请看一下我更新过的问题。我写了这段代码,但我得到以下错误:undefined不是一个函数(靠近“…”)。然后(函数(res){…)
如果您在控制台中登录客户端。签出handleAddToBagBtn
?或者您也可以在函数的第一行中使用调试器。我发现:{“graphQLClient”:{“typeBundle”:{“types”:{“QueryRoot”:{“name”:“QueryRoot”,“kind”:“OBJECT”,“fieldBaseTypes”:{“node”:“node”,“nodes”:“nodes”:“nodes”,“shop”:”“Shop”}……
inshort-graphQLClient-objectReplaceconst-lineItemsToAdd=[{'variantID':variantID,数量:1}];
withconst-lineItemsToAdd=[{'variantID':variantID,数量:1}]
最有可能的问题是variantID。检查您是否获得了正确的Id并正确地传递了它。还有密钥。是的,我也尝试了这个拼写。但它给了我同样的警告我写了这个代码,但我得到了以下错误:未定义不是一个函数(靠近“…”)。然后(函数(res){…)
如果您在控制台中记录客户端。签出handleAddToBagBtn
?或者您也可以在函数的第一行中使用调试器。我发现:{“graphQLClient”:{“typeBundle”:{“types”:{“QueryRoot”:{“name”:“QueryRoot”,“kind”:“OBJECT”,“fieldBaseTypes”:{“node”:“node”,“nodes”:“nodes”:“nodes”,“shop”:”Shop“}………
inshort-graphQLClient-objectReplaceconst-lineItemsToAdd=[{'variantID':variantID,数量:1}];
withconst-lineItemsToAdd=[{'variantID':variantID,数量:1}]
最有可能的问题是variantID。检查您是否获得了正确的Id并正确传递了它。还有密钥。是的,我也尝试了这个拼写。但它给了我同样的警告+1。感谢您的回答!Shopify JavaScript Buy SDK的官方文档非常不完整,而且经常出错。经过一天的尝试之后查看文档并失败,我发现了这一点,它成功了。很高兴它帮助您@Azer-祝您的项目好运:)+1。感谢您的回答!Shopify JavaScript Buy SDK的官方文档非常不完整,并且经常出错。在尝试查看文档并失败一天后,我发现了这一点,它成功了d、 很高兴它帮助了你@Azer-祝你的项目好运:)