【每日学点鸿蒙知识】Text填充父控件、Native接收数组、js逻辑不执行问题、UIAbility上下文问题、页面跳转路由栈

1、HarmonyOS 如何使Text组件填充满父组件?
复制代码
build() {
  Row() {
    Row() {
      Text(this.str)
        .constraintSize({ maxWidth: '100%', minHeight: "30vp" })
        .backgroundColor(Color.Gray)
        .fontSize('24vp')
    }
    .key('row1')
    .constraintSize({ maxWidth: '100%'})
    .backgroundColor(Color.Green)
  }
  .key('row2')
  .backgroundColor(Color.Yellow)
  .width('90%')

  Button('add')
    .onClick(() => {
      this.str += 'hello';
    })
  Button('reset')
    .onClick(() => {
      this.str = 'hello';
    })
}

想让row1组件的大小随Text组件的大小变化,当最外层row2宽度放不下时,自动换行,并且完全填充row2容器,但目前在row1外侧总有一段无法被填充的(下图右侧的黄色区域),如何修改可以使row1/Text完全填充row2?

把row2的width去掉就好了,如果需要调节布局可以使用margin

2、HarmonyOS NAPI,如果从ArkTS侧传入Uint8Array,请问Native该怎么接收这个数组?

请参考以下代码

复制代码
napi_typedarray_type arr_type;
napi_value arr_buffer;
size_t arr_offset;
size_t arr_i, arr_length;
// 获取传入数组的长度和类型
napi_status status = napi_get_typedarray_info(env, arr, &arr_type, &arr_length, NULL, &arr_buffer, &arr_offset);
LOGI("-------arr--%{public}d-------", arr_length);
void *data;
size_t byte_len;
napi_create_array_with_length(env, arr_length, &arr_buffer);
napi_get_arraybuffer_info(env, arr_buffer, &data, &byte_len);
napi_value output_buffer;
void *output_ptr = NULL;
napi_create_arraybuffer(env, byte_len, &output_ptr, &output_buffer);
napi_value out_arr;
napi_create_typedarray(env, arr_type, arr_length, output_buffer, arr_offset, &out_arr);
if (arr_type == napi_uint8_array) {
  uint8_t *input_bytes = (uint8_t *)(data) + arr_offset;
  uint8_t *output_bytes = (uint8_t *)(output_ptr);
  for (arr_i = 0; arr_i < arr_length; arr_i++) {
    OH_LOG_INFO(LOG_APP, "Multiply_for_arraybuffer input_bytes %{public}d", input_bytes[arr_i]);
    output_bytes[arr_i] = (uint8_t)(input_bytes[arr_i] * 1);
    LOGI("最终结果,============%{public}zi", output_bytes[arr_i]);
  }
}
3、HarmonyOS H5页面通过window.open("超链接", "_blank")打开新页面后返回原页面js逻辑不执行?

Web组件如果支持多窗口,即配置了multiWindowAccess为true,则需要在onWindowNew中调用event.handler.setWebController接口,否则会造成Render进程阻塞。应用没有调用event.handler.setWebController接口导致

参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkweb/ts-basic-components-web.md#onwindownew9

4、HarmonyOS ts中BaseAbility extends UIAbility:Cannot find name 'Context'.?
复制代码
export default abstract class BaseAbility extends UIAbility {

  static appContext:common.ApplicationContext;

  onWindowStageCreate(windowStage: window.WindowStage): void {
    BaseAbility.appContext = this.context.getApplicationContext()
    Logger.info('testTag', '%{public}s', 'BaseAbility onWindowStageCreate');
    super.onWindowStageCreate(windowStage)
  }

  static getContext(): common.ApplicationContext {
    return BaseAbility.appContext;
  }
}
5、HarmonyOS 页面跳转的路由栈如何拿到?

获取路由栈信息可以参考:Navigation

NavPathStack是Navigation路由栈,允许被继承。开发者可以在派生类中新增属性方法,也可以重写基类NavPathStack的方法。派生类对象可以替代基类NavPathStack对象使用。提供了下面方法:

相关推荐
meilindehuzi_a7 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
youtootech7 小时前
HarmonyOS《柚兔学伴》项目实战09-待办列表 UI——List+ForEach+滑动删除
数据结构·ui·华为·list·harmonyos
不羁的木木7 小时前
HarmonyOS APP实战-基于Image Kit的图像处理APP - 第6篇:图片滤镜效果实现
图像处理·深度学习·harmonyos
拥抱太阳06168 小时前
HarmonyOS 应用开发《掌上英语》第9篇—ArkTS @ObservedV2 + @Trace 响应式编程精讲
华为·harmonyos
鱼樱前端8 小时前
别再自己拼凑了!这款 Vue 3.5+ 严肃产品级组件库,把 AI 对话、工作流和复杂数据全包了!
javascript·vue.js·github
拥抱太阳06168 小时前
HarmonyOS 应用开发《掌上英语》第10篇——@Local vs @Param vs @Trace 组件状态管理三剑客
华为·harmonyos
Listen·Rain9 小时前
Vue3:setup详解
前端·javascript·vue.js
kyriewen10 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
小粉粉hhh10 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
索西引擎12 小时前
【React】key 属性:协调算法中的元素标识机制与最佳实践
前端·javascript·react.js