当前位置: 网站首页>小程序开发>网站制作

安丘网站优化【安丘开通400电话】安丘网站搭建、安丘微信公众号推文外包、安丘开通京东拼多多设计、安丘淘宝装修

发表日期: 2021-05-20 14:34:04 浏览次数:68

安丘网站优化【安丘开通400电话】安丘网站搭建、安丘微信公众号推文外包、安丘开通京东拼多多设计、安丘淘宝装修

网站建设.jpg

安丘市,山东省省辖县级市,山东省财政直管县,位于山东半岛中部,是国务院批准的首批沿海对外开放县市之一。 [1]  市境总面积1760平方千米,耕地面积130万亩,辖3个街道、9个镇,870个行政村,总人口96.2万(2019年)。 [1] 

安丘市历史文化可溯至春秋莒国,莒之渠丘父封邑;汉高祖八年(前199年),以古渠丘地封将军张说为安丘侯;汉景帝中元二年(前148年)以侯国名为县名正式置县。 [2]  2017年10月,安丘市被住建部命名为国家园林城市,首批全国农村社区建设示范单位。 [3]  2020年,安丘市被评为中国夏季休闲百佳县市。 [4] 

安丘市东距青岛110公里,西距济南200公里,北距潍坊25公里;国道206、省道下小路、央赣路等多条主要干线交汇于境内,胶济铁路和济青、潍莱高速临境而过,潍日高速横贯市境南北。 [1]  2019年,安丘市地区生产总值同比增长5.5%,城乡居民人均可支配收入分别增长6.5%和8.5%,完成一般公共预算收入25.48亿元,同比增长2%,扣除减税降费等因素同口径增长12%。 [5] 



 让我们更具体一点,谈谈各个hooks,从最常见的state hook开始:

State hooks


     你将惊讶的了解到useState hook使用的useReducer只是为它提供了一个预定义的reducer处理程序。这意味着实际上useState返回的结果是一个reducer状态和一个action dispatcher。我希望你看一下state hook使用的reducer处理程序:
function basicStateReducer(state, action) {
  return typeof action === 'function' ? action(state) : action;
}
    正如预期的那样,我们可以直接为action dispatcher提供新的状态; 但你会看那个吗?!我们还可以为dispatcher提供一个动作函数,该函数将接收旧状态并返回新状态。这意味着,当你将状态设置器传递到子组件时,你可以改变当前父组件的状态,不需要作为一个不同的prop传递下去。
      举个例子:
const ParentComponent = () => {
  const [name, setName] = useState()
  
  return (
    <ChildComponent toUpperCase={setName} />
  )
}

const ChildComponent = (props) => {
  useEffect(() => {
    props.toUpperCase((state) => state.toUpperCase())
  }, [true])
  
  return null
}

    最后,effect hooks  – 它对组件的生命周期及其工作方式产生了重大影响:

Effect hooks


    Effect hooks 的行为略有不同,并且有一个额外的逻辑层,我接下来会解释。同样,在我深入了解实现之前,我希望你能记住effect hooks的属性:

  1. 它们是在渲染时创建的,但它们在绘制后运行。

  2. 它们将在下一次绘制之前被销毁。

  3. 它们按照已经被定义的顺序执行。

     请注意,我使用的是“绘制”术语,而不是“渲染”。这两个是不同的东西,我看到最近React Conf中的许多发言者使用了错误的术语!即使在官方的React文档中,他们也会说“在渲染屏幕之后”,在某种意义上应该更像“绘制”。render方法只创建fiber节点,但没有绘制任何东西。

        因此,应该有另一个额外的队列保持这些effect,并应在绘制后处理。一般而言,fiber保持包含effect节点的队列。
每种effect都是不同的类型,应在适当的阶段处理
在变化之前调用实例的getSnapshotBeforeUpdate()方法。
执行所有节点的插入,更新,删除和ref卸载操作。
执行所有生命周期和ref回调。生命周期作为单独的过程发生,因此整个树中的所有放置,更新和删除都已经被调用。此过程还会触发任何特定渲染的初始effects。


由useEffect() hook 安排的effects – 基于实现也被称为“passive effects” (也许我们应该在React社区中开始使用这个术语?!)。


当涉及到hook effects时,它们应该存储在fiber的一个名为 updateQueue的属性中。
每个effect node应该具有以下模式
tag – 一个二进制数,它将决定effect的行为
create- 绘制后应该运行的回调
destroy- 从create()返回的回调应该在初始渲染之前运行。


inputs – 一组值,用于确定是否应销毁和重新创建effe


 next – 函数组件中定义的下一个effect的引用。


      除了tag属性外,其他属性都非常简单易懂。如果你已经很好地研究了hooks,你就会知道React为你提供了几个特殊的hooks:useMutationEffect()和useLayoutEffect()。这两种效果在内部使用useEffect(),这实际上意味着它们创建了一个effect节点,但它们使用不同的tag值。
标签由二进制值组合而成:
const NoEffect = /*             */ 0b00000000;
const UnmountSnapshot = /*      */ 0b00000010;
const UnmountMutation = /*      */ 0b00000100;
const MountMutation = /*        */ 0b00001000;
const UnmountLayout = /*        */ 0b00010000;
const MountLayout = /*          */ 0b00100000;
const MountPassive = /*         */ 0b01000000;
const UnmountPassive = /*       */ 0b10000000;
这些二进制值的最常见用例是使用管道(|)将这些位按原样添加到单个值。然后我们可以使用&符号(&)检查标签是否实现某种行为。如果结果为非零,则表示tag实现了指定的行为。
以下是React支持的hook effect类型及其标签:
Default effect — UnmountPassive | MountPassive.
Mutation effect — UnmountSnapshot | MountMutation.
Layout effect — UnmountMutation | MountLayout.
以下是React如何检查行为实现:
if ((effect.tag & unmountTag) !== NoHookEffect) {
  // Unmount
}
if ((effect.tag & mountTag) !== NoHookEffect) {
  // Mount
}

因此,基于我们刚刚学到的关于effect hooks的内容,我们实际上可以在外部向某个fiber注入effect:

function injectEffect(fiber) {
  const lastEffect = fiber.updateQueue.lastEffect

  const destroyEffect = () => {
    console.log('on destroy')
  }

  const createEffect = () => {
    console.log('on create')

    return destroy
  }

  const injectedEffect = {
    tag: 0b11000000,
    next: lastEffect.next,
    create: createEffect,
    destroy: destroyEffect,
    inputs: [createEffect],
  }

  lastEffect.next = injectedEffect
}

const ParentComponent = (
  <ChildComponent ref={injectEffect} />
)


安丘网站优化安丘开通400电话安丘网站搭建、安丘微信公众号推文外包、安丘开通京东拼多多设计、安丘淘宝装修

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: http://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878