再会!
假设我想将 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) 我有一列,中间有一张卡片。单击列时应该有一个操作,但单击卡片时不应发生任何操作。(如可取消的对话框)
当我用XML做到这一点时,当为列设置可点击(true)时,这个问题得到了解决,但是在Jetpack Compose中,当我点击卡片时,有一个无法删除它的效果
我将此代码设置为卡的修饰符:
.clickable{}
Run Code Online (Sandbox Code Playgroud)
如何从可点击项目中删除默认效果(按下效果无波纹)?
android kotlin android-jetpack android-jetpack-compose composable
想象一下,我有一个应用程序,它有 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) 我尝试在我的项目中使用可组合项GoogleMap,但现在我需要LatLngBounds可见的谷歌地图onMapLoaded,以便我能够在这个边界内加载一些 POI,但我找不到如何获取此信息的答案。
有人可以给我线索吗?
我正在使用 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)
我想知道是否有办法做到这一点。
我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 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呢?
请大家发表一下自己的想法和意见,谢谢大家。
我是 Jetpack Compose 和 Kotlin 的新手,但我正在尝试使用最近稳定的 Jetpack Compose v1.0.0.0开发移动应用程序
我使用NavController进行导航,我的屏幕是使用可组合函数制作的。
因为我的屏幕本身是一个可组合函数,所以我无法理解如何在可组合函数条目上加载一些 API/DB 数据。
我尝试阅读有关 的内容LaunchedEffect,但不知道这是否是正确的方法,而且实施起来也很复杂。
这是示例代码:
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)我正在尝试在 jetpack compose 中使用一些片段,但无法从 (androidx.compose.ui.viewinterop) 导入 AndroidViewBinding,并且它始终显示为未解析的名称
怎么导入呢??
xml-layout android-jetpack-compose android-viewbinding 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) composable ×10
android ×6
kotlin ×5
vuejs3 ×2
google-maps ×1
javascript ×1
typescript ×1
xml-layout ×1