携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

这是我关于 ahooks - useRequest 系列文章的第二篇,其他两篇请查看:

在上一篇文章:使用 ahooks 中的 useRequest 轻松管理React中的网络请求 ,我们介绍了 useRequest 这个 Hook 的使用以及配置。

本文我们主要介绍如何通过 useRequest 实现乐观更新。

阅读全文 »

React-router-dom 6 总结

通过Routes标签创建路由表

1
2
3
4
5
6
<Routes>
{/* index 表示当前路由的默认路由 */}
<Route index element={<Navigate to="/projects" replace />} />
<Route path="/projects" element={<ProjectListScreen />} />
<Route path="/projects/:projectId/*" element={<ProjectScreen />} />
</Routes>

路由指定组件的参数从 component 换成了 element,过去的 component 传递的是组件名,现在需要传递的是 JSX 标签,这点需要注意。

<Route> 标签中,可以通过申明 index 属性,来进行默认导航,上面的示例就是将根路由默认导航到 /projects<Navigate> 标签申明 replace 属性,可以实现路由栈替换,避免路由表可以无限回退。

阅读全文 »

Antd 使用学习

Antd 使用学习1. 配置antd 配合 craco2. 使用Antd1. Antd 使用第一课 Form 表单扩展知识:2. Table 表格的使用:3. Select 与 Input4. Dropdown 与 Menu5. Typegraphy.Text 用于显示一段文字6. Button7. Popover8. List,List.Item,List.Item.Meta9. Modal 模态弹窗10. Spin 显示加载动画效果

1. 配置antd 配合 craco

  1. 安装craco yarn add @craco/craco,并修改 package.json 文件
  2. 安装craco-less yarn add craco-less
  3. 安装bable-plugin-import yarn add babel-plugin-import 用于按需映入css or less

修改package.json

阅读全文 »

从零开始学习React:了解当前React常用技术,编写第一个React组件
从零开始学习React:了解组件的三大属性

上一节我们简单介绍了React的相关技术栈,以及如何在一个 html 文件中使用 React,创建一个React 组件并渲染到Html 中。

本节我们来介绍在 React 中 一个组件比较重要的三大属性

阅读全文 »

React 与 Vue 可以说是现阶段最热门的前端UI框架了,最近开始学习 React,准备开一个新坑:从零开始学习React,主要是学习时的一些思考与记录,如有谬误,烦请斧正。由于前端技术的快速迭代,我会在适当位置标注版本信息,以免出现货不对板。

阅读全文 »

匿名内部类在 Java 中是经常用到的一个特性,例如在 Android 开发中的各种 Listener,使用时也很简单,比如:

1
2
3
4
5
6
7
8
9
10
11
12

//lambda
button.setOnClickListener(v -> {
//do some thing
});
//匿名内部类
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do some thing
}
});
阅读全文 »

在 Compose 中使用协程

Kotlin 中协程有多好用,想必不用我多说了。方便的构建、简洁的切换协程语法、await函数与join函数,尤其是在 lifecycle 扩展出现之后,在 Activity 与 Fragment 中可以通过类似 lifecycleScope.launch { } 这样的语法更方便的使用协程。

之前我们介绍过,Compose 是 FP 风格的,UI是通过一个个Composable函数组合在一起形成的,自然不能用lifecycleScope.launch { },那么在 Compose 中我们该如何使用协程呢?

阅读全文 »

Android Gradle Plugin(后简称为AGP),在 7.0 版本之后与 Gradle 版本版本号保持同步(大喜,不需要再去查 gradle 与 AGP 的版本号对应了)。

本文记录了在AS升级到 Android Studio Bumblebee | 2021.1.1 版本后,项目默认创建使用 AGP 7.1.0 的一些注意事项。

先看一个在 Gradle 6.7.1+AGP 4.2 时代(后简称为AGP 6.0)最常见的项目配置:

阅读全文 »

按照官网的手动集成步骤一步一步完成,但是在运行打开 FlutterActivity 时出现了了如下错误:

1
2
3
4
5
E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(18)] VM snapshot invalid and could not be inferred from settings.
E/flutter: [ERROR:flutter/runtime/dart_vm.cc(250)] Could not setup VM data to bootstrap the VM from.
E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(84)] Could not create Dart VM instance.
A/flutter: [FATAL:flutter/shell/common/shell.cc(274)] Check failed: vm. Must be able to initialize the VM.

百度该错误定位到的问题解释有两种:

阅读全文 »

简断截说,上代码!

举例:

1
2
3
4
5
6
7
8
9
10
11
fun login(name:String,pass:String){
HttpMethods.webService.login(name,pass){
override fun onSuccess(bean: LoginBean) {
connect(bean.token)
}
override fun onError(e: Exception) {
}
}
fun connect(token:String){
......//调用方法,从回调函数获取连接状态
}
阅读全文 »

错误日志如下:

java.lang.NoSuchMethodError: No static method metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; in class Ljava/lang/invoke/LambdaMetafactory; or its super classes (declaration of ‘java.lang.invoke.LambdaMetafactory’ appears in /apex/com.android.runtime/javalib/core-oj.jar)

原因:
新版本的 Retrofit 使用到了JAVA8 的Lambda表达式,项目中需要使用JAVA1.8,否则无法正常使用。

点击File -> Project Structure->Modules -> Properties 设置Source Compatibility和 Target Compatibility两项为 JDK8就可以了

农神食其子-戈雅

《农神食其子》描绘的是农神「克洛诺斯」吞噬他的神子的画面。农神因为惧怕其子女未来推翻自己作为神王的统治地位,便吞噬了他的五个子女。

抛开故事本身,其实大多数父亲也都有「食子」情节。随着儿子的成长,在家庭中开始不断寻求地位的变化,要求与父母平等的对话,这时候父亲的地位是不断受到挑战的,「食子」情节也就此埋下。

阅读全文 »
0%