我试图改变我的navBar中某些图标的大小,但我对如何做到这一点感到有点困惑?到目前为止我的代码是:
func setUpNavBarButtons() {
let moreButton = UIBarButtonItem (image: UIImage(named:"ic_more_vert_3")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(handleMore))
navigationItem.rightBarButtonItems = [moreButton]
let refreshButton = UIBarButtonItem (image: UIImage(named:"ic_refresh")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(refreshDataButton))
navigationItem.leftBarButtonItems = [refreshButton]
}
Run Code Online (Sandbox Code Playgroud)
任何帮助?
我正在使用Ionic,cordova制作应用程序.我试图将视图的方向限制为仅限肖像,我在config.xml文件中执行以下操作,但它仍然没有任何想法吗?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.ionicframework.ionicucas805049" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>ionicUcas</name>
<description>
An Ionic Framework and Cordova project.
</description>
<author email="hi@ionicframework" href="http://ionicframework.com/">
Ionic Framework Team
</author>
<content src="index.html"/>
<access origin="*"/>
<preference name="webviewbounce" value="false"/>
<preference name="UIWebViewBounce" value="false"/>
<preference name="DisallowOverscroll" value="true"/>
<preference name="BackupWebStorage" value="none"/>
<preference name="Orienation" value="portrait" />
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true"/>
</feature>
</widget>
Run Code Online (Sandbox Code Playgroud)
我添加了<preference name="Orienation" value="portrait" />
但没有喜悦....
当我重新获取查询时,当我有 onClick 按钮时,它会进入“正在更新...”状态,但我希望重新获取查询并显示“正在加载...”状态。我的代码是:
https://stackblitz.com/edit/react-ts-jfq8ve?file=index.tsx
import React, { useEffect } from 'react';
import { render } from 'react-dom';
import { useQuery } from 'react-query';
import axios from 'axios';
import { QueryClient, QueryClientProvider } from 'react-query';
const App: React.FunctionComponent = () => {
const [value, setValue] = React.useState<number>(7);
const queryKey = 'getData';
const getData = async (): Promise<any> => {
await new Promise((resolve) => setTimeout(resolve, 1000));
const response = await axios
.get(`https://jsonplaceholder.typicode.com/todos`)
.then((res) => res.data);
return response;
};
const {
data: result, …Run Code Online (Sandbox Code Playgroud) 我在 Angular 中有一项服务,它从 API 调用数据。那么当我试图显示它没有显示的数据时?
服务
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { Observable, of, throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';
@Injectable()
export class ApiService {
api: string = 'https://newsapi.org/v2/top-headlines?country=gb&category=entertainment&apiKey=8ee8c21b20d24b37856fc3ab1e22a1e5';
constructor(
private http: HttpClient,
) { }
getAll(): Observable<any> {
return this.http.get(this.api)
.pipe(
catchError(this.handleError)
);
}
private handleError(error: HttpErrorResponse) {
if (error.error instanceof ErrorEvent) {
console.log(error.error.message)
} else {
console.log(error.status)
}
return throwError(
console.log('Something is wrong!'));
}; …Run Code Online (Sandbox Code Playgroud) 我的测试通过了,但有一个控制台引用错误:
您正在尝试访问 Jest 环境被拆除后的属性或方法。
测试:
import {render, screen, cleanup, fireEvent, waitFor } from '@testing-library/react';
import {create, act} from 'react-test-renderer';
import Comp1 from './Comp1';
import ReactDOM from 'react-dom';
import "@testing-library/jest-dom";
import { QueryClient, QueryClientProvider } from 'react-query';
const queryClient = new QueryClient();
it('Should wait for response', () => {
act(() => {
waitFor(() => {
render(<QueryClientProvider client={queryClient}><Comp1 /></QueryClientProvider>);
expect(screen.getByTestId('loading', {}, { timeout: 2000 })).toBeInTheDocument();
});
});
});
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?这会检查 async/await api 调用的响应。
javascript reactjs jestjs react-test-renderer react-testing-library
我的反应应用程序中有上下文,我想在上下文中调用查询并将状态值设置为 api 数据中的对象。我尝试了以下操作,但收到错误,无法读取未定义的属性(4)。所以我知道这可能是因为数据尚未返回,因此我无法将状态设置为数组中的对象,那么如何解决这个问题?另外,我将如何处理上下文传递到的组件中的状态,即加载等。
另一个问题是我应该在上下文中调用 API,还是应该在组件中调用,然后在组件中设置上下文状态?这是更好的方法吗?
到目前为止的代码:
export const DataProvider: React.FunctionComponent = ({ children }) => {
const getApi = async (): Promise<any> => {
const response = await axios.get(`https://www.xxxxxx`).then(res => res.data);
return response;
}
const { data: result, status, error, isFetching }: any = useQuery(['apiData'], () => getApi());
const [myValue, setmyValue] = React.useState(result[4]); // this is causing the issue
return (
<DataContext.Provider value={{myValue, setmyValue, result}}>
{children}
</DataContext.Provider>
);
};
Run Code Online (Sandbox Code Playgroud) 我的测试中出现错误,将窗口环境变量标记为未定义。我理解该错误,因为它是基于使用变量的应用程序的运行时,并且可能它们在运行应用程序时未定义。但我不知道 setupTests.tsx 中的哪个位置需要定义它。到目前为止,该变量的使用方式如下:
\n索引.html
\n<!DOCTYPE html>\n<html lang="en">\n <head>\n <meta charset="utf-8" />\n <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <script src="%PUBLIC_URL%/config.js"></script>\n </head>\n <body>\n <noscript>You need to enable JavaScript to run this app.</noscript>\n <div id="root"></div>\n </body>\n</html>\nRun Code Online (Sandbox Code Playgroud)\n配置文件
\nwindow._env_ = {\n REACT_APP_URL: "https://apiurl.com"\n}\nRun Code Online (Sandbox Code Playgroud)\n如何在应用程序中使用它:
\ndeclare const window: Window &\n typeof globalThis & {\n _env_: any\n }\n\nconst url = window._env_.REACT_APP_URL;\nexport const apiUrl = url;\nRun Code Online (Sandbox Code Playgroud)\nsetupTests.tsx我确实尝试将其添加到此处,但它仍然无法正常工作
\nimport '@testing-library/jest-dom';\nimport { setLogger } from 'react-query'\nimport { …Run Code Online (Sandbox Code Playgroud) 我正在尝试定位父节点,它是我的代码中链接标签 (a) 的一个 div,我已经尝试过,target.parentNode但这不起作用,也许是因为我正在使用 querySelectorAll?。到目前为止我的代码是:
function remove() {
var target = document.querySelectorAll('a[data-type="data"]'), i;
for (i = 0; i < target.length; i++) {
if (target.length > 1) {
target[i].remove();
}
}
}
remove();
Run Code Online (Sandbox Code Playgroud)
网址:
<div class="carousel-slide">
<a data-type="data" data-type="image">
<img class="img-responsive" src="./285-603.jpg">
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图限制我在我的angular js应用中看到的字符。目前我正在使用:
<p ng-bind-html="item.get('Content') | limitTo: 150"></p>
Run Code Online (Sandbox Code Playgroud)
但是没有喜悦,没有任何想法...
我试图取消任何以前/待处理的请求,如果它们花费的时间太长并且用户导航到另一个组件,当前查询采用状态值,并且当它更改组件重新渲染时,这很好并且是所需的行为。然而,在网络选项卡中查看请求仍处于待处理状态。有没有办法在反应查询中取消任何以前的请求。我尝试根据文档取消查询,但它不正确,因为它没有取消。
const [value, setValue] = React.useState<boolean>(false);
const getData = async (value: number): Promise<any> => {
const CancelToken = axios.CancelToken
const source = CancelToken.source()
const response = await axios.get(`https://xxxxxx?value=${value}`, {
cancelToken: source.token,
}).then(res => res.data);
if (CancelToken) {
response.cancel = () => {
source.cancel('Query was cancelled by React Query')
}
}
return response;
}
const { data: result, status, error, isFetching }: any = useQuery(['getData', value], () => getData(value),
{
refetchOnWindowFocus: false,
}
);
Run Code Online (Sandbox Code Playgroud) javascript ×6
reactjs ×5
react-query ×3
jestjs ×2
angular ×1
angularjs ×1
axios ×1
cordova ×1
ionic ×1
ios ×1
swift3 ×1
typescript ×1
xcode ×1