标签: composable

Vue3:如何混合组合 api 和选项 api 以实现可组合/混合命名空间

再会!

假设我想将 Vue 与 options api 一起使用,但又不想使用 mixin,因为它们会导致很多问题。我想使用可组合项作为混合项来为混合项/可组合项提供命名空间。

所以,我的“解决方案”是结合选项 api 和组合 api。

假设我有一个这样的 mixin:

export default {
  data() {
    return {
      person: {
        first_name: 'first name',
        last_name: 'last name',
      },
      gender: 'gender'
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我决定将其转换为可组合项,如下所示:

export default () => {
  const person = reactive({first_name: 'fn', last_name: 'ln'});
  const gender = ref('gender');
  
  return {
    person,
    gender,
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,在我的 .vue 文件中,我可以导入可组合项:

<script lang="ts">
import useDataComposable from './dataMixin';
...

export default defineComponent({
  ...
  setup() {
    const dataComposable = useDataComposable();
    dataComposable.gender.value = 'gender2'; …
Run Code Online (Sandbox Code Playgroud)

vuejs3 composable

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

JetPack Compose 对可点击项目没有影响

我有一列,中间有一张卡片。单击列时应该有一个操作,但单击卡片时不应发生任何操作。(如可取消的对话框)

当我用XML做到这一点时,当为列设置可点击(true)时,这个问题得到了解决,但是在Jetpack Compose中,当我点击卡片时,有一个无法删除它的效果

我将此代码设置为卡的修饰符:

.clickable{}
Run Code Online (Sandbox Code Playgroud)

如何从可点击项目中删除默认效果(按下效果无波纹)?

android kotlin android-jetpack android-jetpack-compose composable

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

Vue 3 中 props、emits、useStore 的代码重用

想象一下,我有一个应用程序,它有 10 个组件,这些组件在某些方面相似,但包含不同的内容和一些功能差异。但它们都接收相同的 3 个 props 作为基础(换句话说,它们可能定义更多,但都定义至少 3 个特定的 props),它们也都有 1 个共同的发射。它们还调用const store = useStore()并具有相同的计算属性,从 vuex 存储中提取值。

有没有一种方法可以创建可组合的或其他策略,让这些组件组合或继承当前在 src 中重复的这些通用代码行。

例子:

//component 1
<script lang="ts" setup>

import { useStore } from 'vuex';

const store = useStore();

const props = defineProps<{
  a: number;
  b: string;
  c: boolean;
  uniqueToComp1: string;
}>();

const foo = computed(() => store.state.bar[props.a]);
const uniqueConstForComp1 = computed(() => props.a + Math.random());

const emit = defineEmits<{
  (e: 'exit'): void;
}>();

</script>
Run Code Online (Sandbox Code Playgroud)

另一个例子:

//component 2
<script lang="ts" setup> …
Run Code Online (Sandbox Code Playgroud)

javascript typescript vuejs3 vue-composition-api composable

5
推荐指数
0
解决办法
1006
查看次数

如何从jetpack compose中的可见地图获取LatLngBounds

我尝试在我的项目中使用可组合项GoogleMap,但现在我需要LatLngBounds可见的谷歌地图onMapLoaded,以便我能够在这个边界内加载一些 POI,但我找不到如何获取此信息的答案。

有人可以给我线索吗?

android google-maps android-jetpack-compose composable

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

从另一个函数中更改jetpack compose记住变量

我正在使用 jetpack compose 库为 Android 设备开发一个应用程序。

我在 compose 函数内创建的示例

var taskVeriable = 记住 {mutableStateOf("Hello World")}

我需要从另一个组合函数更新变量的值。有什么办法可以实现这一点吗?

@Composable
fun TestComposeA(){

var taskVeriable = remember {mutableStateOf("Hello World")}

TestComposeB(taskVeriable)

}

@Composable
fun TestComposeB(taskVeriable : String){
taskVeriable = "New Value"
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法做到这一点。

kotlin android-jetpack-compose composable

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

使用Jetpack Compose 1.0.0-alpha11时如何手动导入扩展函数?

List<Item>想使用 Jetpack Compose 显示它。在版本“1.0.0-alpha10”中,此代码:

@Composable
fun ItemsScreen(items: List<Item>) {
    item?.let {
        LazyColumn {
            items(
                    items = items
            ) { item ->
                ItemCard(item = item)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

工作正常,但是,根据新的更新,从“1.0.0-alpha11”开始:

LazyColumn/LazyRow/LazyVerticalGrid 范围的新 items(count: Int) 工厂方法。items(items: List) 和 itemsIndexed(items: List) 现在是扩展函数,因此您在使用时必须手动导入它们。

我的应用程序不再工作了。我不确定我是否理解:

items(items: List) 现在是扩展函数,因此您必须手动导入。

这是什么意思?如何解决这个问题?

提前致谢。

android kotlin android-jetpack-compose composable

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

setContent 块是可组合的吗?

我正在自学 Android Jetpack Compose,并试图了解有关可组合函数调用的一些内容。

Android 官方文档指出“只能从其他可组合函数的范围内调用可组合函数”

我有这段代码在块Greeting内调用可组合 fxn setContent

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
//calling Greeting() inside the setContent() block
           Greeting("Me")
        }
    }
}

//Composable function
@Composable
fun Greeting(name: String) {

    Text(text = "Hello $name!", modifier = Modifier.padding(16.dp))

}
Run Code Online (Sandbox Code Playgroud)

既然我们在其中调用了一个 Composable 函数,那么这是否会使setContent 块成为一个 Composable呢?

请大家发表一下自己的想法和意见,谢谢大家。

android android-jetpack-compose composable

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

在 Android 中进入/加载基于 Jetpack Compose 的屏幕时从网络或数据库获取数据

我是 Jetpack Compose 和 Kotlin 的新手,但我正在尝试使用最近稳定的 Jetpack Compose v1.0.0.0开发移动应用程序

我使用NavController进行导航,我的屏幕是使用可组合函数制作的。

因为我的屏幕本身是一个可组合函数,所以我无法理解如何在可组合函数条目上加载一些 API/DB 数据。

我尝试阅读有关 的内容LaunchedEffect,但不知道这是否是正确的方法,而且实施起来也很复杂。

这是示例代码:

  1. DemoScreen.kt:将此视为我的startDestination屏幕NavHost

    @Composable fun DemoScreen(navController: NavController) {

     var json = "Placeholder content, to be updated on screen load and refreshed every x seconds..."
    
     //1. Make network or DB call as soon as entering this composable and store in the "json" variable
     //makeDataLoadCallOnEntry() //something like this, and show processing indicator...
    
     //2. And then keep refreshing/updating the …
    Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose composable

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

如何在jetpack compose中导入AndroidViewBinding

我正在尝试在 jetpack compose 中使用一些片段,但无法从 (androidx.compose.ui.viewinterop) 导入 AndroidViewBinding,并且它始终显示为未解析的名称

怎么导入呢??

xml-layout android-jetpack-compose android-viewbinding composable

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

Android JetPack Compose - 了解 @Composable 范围

我现在对此有点抓狂,无论我看了多少教程和读了多少代码片段,我根本无法理解这个概念。

我只是想将一个标记图像放在我点击的另一个图像的顶部。

class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setContent {

        MyLayout() {
            PlaceMarkerOnImage(it)
        }
    }
}

@Composable
private fun MyLayout(
    placeMarker: (Offset) -> Unit
) {
    val painter: Painter = painterResource(id = R.drawable.image)

    Column(Modifier.fillMaxSize()) {

        Box(
            modifier = Modifier.weight(0.95f)
        ) {
            Image(
                contentScale = FillBounds,
                painter = painter,
                contentDescription = "",
                modifier = Modifier.pointerInput(Unit) {
                    detectTapGestures(
                        onTap = {
                            placeMarker(it)
                        }
                    )
                }
            )
        }
        Button(
            onClick = { },
            modifier = Modifier.weight(0.05f),
            shape = …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-compose composable

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