`

ReactLink

 
阅读更多

ReactLink模块被LinkedStateMixin模块调用,用于实现双向绑定功能。

 

'use strict';

/**
 * React.createClass({
 *   getInitialState: function() {
 *     return {value: ''};
 *   },
 *   render: function() {
 *     var valueLink = new ReactLink(this.state.value, this._handleValueChange);
 *     return <input valueLink={valueLink} />;
 *   },
 *   _handleValueChange: function(newValue) {
 *     this.setState({value: newValue});
 *   }
 * });
 */

var React = require('./React');

// LinkedStateMixin模块中调用,将requestChange赋值为ReactStateSetters.createStateKeySetter方法
// 使返回实例的requestChange自动调用组件setState方法,更新state[key]值
function ReactLink(value, requestChange) {
  this.value = value;
  this.requestChange = requestChange;
}

/**
 * MyComponent.propTypes = {
 *   tabIndexLink: ReactLink.PropTypes.link(React.PropTypes.number)
 * }
 */

// 父组件通过LinkedStateMixin注入linkState方法,并且将linkState构建的函数传入子组件
// createLinkTypeChecker提供该函数的propsType校验
function createLinkTypeChecker(linkType) {
  var shapes = {
    value: linkType === undefined ? React.PropTypes.any.isRequired : linkType.isRequired,
    requestChange: React.PropTypes.func.isRequired
  };
  return React.PropTypes.shape(shapes);
}

ReactLink.PropTypes = {
  link: createLinkTypeChecker
};

module.exports = ReactLink;

 

0
0
分享到:
评论

相关推荐

    reactlink-pipe:ReactLink 数据绑定方法的管道,用于数据验证和格式化等

    ReactLink-管道 ReactLink 数据绑定方法的管道; 用于数据验证和格式化之类的事情。 ReactLink 的背景 提供了一种称为的方法, this.state在&lt;input&gt;字段的值发生更改时更新this.state上的this.state 。 这个...

    react-linkState将事件绑定至state支持Preact和React

    本篇文章将深入探讨`linkState`的功能、用法以及如何在React和Preact中使用它。 `linkState`的主要优点在于它提供了一种简洁的语法,使得更新状态时不必手动地调用`setState`方法。这个辅助函数由`developit`社区...

    reactlink-immutable:双向绑定Mixin for React并支持Immutable.js数据结构

    不可变的ReactLink 一个 mixin,使用数据结构作为this.state属性为组件提供双向数据绑定。 ?? ReactLink? 好吧,让我们备份一点。 每当&lt;input&gt;字段的值更改时,React提供一种称为的方法来更新this.state上...

    react-hash-link:用于React应用程序的无痛哈希链接路由

    :linked_paperclips: React哈希链接 :linked_paperclips: 用于React应用程序的无痛哈希链接路由。 HashLinkObserver组件可以在组件树的任何级别呈现,并将监视URL中的哈希片段。 遇到哈希链接时, HashLinkObserver...

    任何可以渲染到DOM的东西都可以使用domtestinglibrary进行测试

    const linkElement = screen.getByText(/learn react/i); expect(linkElement).toBeInTheDocument(); }); ``` 在上面的例子中,我们首先渲染了`MyComponent`,然后通过`screen.getByText`找到包含“learn react”...

    React实现双向绑定示例代码

    `LinkedStateMixin`提供了一个`linkState`方法,该方法用于创建一个`reactLink`对象,这个对象有两个关键属性:`value`和`requestChange`。`value`属性用来获取state的值,而`requestChange`则是一个回调函数,当值...

    react-reactscrollReact滚动组件

    import { Link } from 'react-scroll'; &lt;Link to="section1" smooth={true} duration={500}&gt; Go to Section 1 &lt;/Link&gt; ``` 在这个例子中,`to`属性指定了目标滚动位置的ID,`smooth`属性设为`true`表示启用平滑...

    Android代码-react-native-ble-manager

    react-native-ble-manager ...Link native library with react-native link, or Link native library manually Both approaches are described below. Link Native Library with react-native li

    react-download-link:React组件以下载具有缓存数据的文件

    安装方式: npm install --save react-download-link 包括: import DownloadLink from "react-download-link" ; 用: &lt; DownloadLink xss=removed xss=removed nexportFile={()&gt; "My cached data"}/&gt; 或承诺: ...

    react-plaid-link:React格子链接的绑定

    React格子链接 挂钩和组件,用于与集成安装使用npm : npm install react-plaid-link --save 带yarn yarn add -S react-plaid-link文献资料请参考,以更全面地了解各种Link选项。例子转到react-plaid-link以亲自尝试...

    react-anchor-link-smooth-scroll:使用平滑滚动polyfillReact锚链的组件

    import AnchorLink from 'react-anchor-link-smooth-scroll' const SmoothScroll = ( ) =&gt; ( &lt; AnchorLink href = '#things'&gt; Things &lt; / AnchorLink &gt; &lt; AnchorLink href = '#stuff'&gt; Stuff &lt; / Anchor...

    jest-v26-codelab:通过示例学习jestjs v26.xx测试框架

    test('renders learn react link on / route', () =&gt; { render( , ); expect(screen.getByText(/learn react/i)).toBeInTheDocument(); }); ``` ### 8. 覆盖率报告 Jest可以生成测试覆盖率报告,通过在...

    react-applink:应用程序链接进行React

    react-applink 应用程序链接进行React 情况: 对于已安装的设备,它将调用您的APP。 对于卸载设备,它将直接跳至您的页面。 用法: 安装: npm我-保存react-applink 代码: const WEB = '...

    react入门实践案例

    例如,cxh_react案例可能包含了`BrowserRouter`、`Route`和`Link`等元素来设置路由规则。 七、状态管理 随着应用复杂度增加,单一组件的状态管理可能不足以应对,这时我们可以采用Redux或MobX等状态管理库。这些库...

    React开发书籍

    书中可能会介绍如何配置和使用`BrowserRouter`、`Route`和`Link`等组件来实现导航功能。 最后,React生态系统中还有许多其他值得关注的库,如Redux Form用于表单管理,Material-UI提供React的Material Design组件,...

    React Native By Example

    You will also link up with the third-party Facebook SDK, convert an app to support the Redux architecture, and learn the process involved in making your apps available for sale on the iOS App Store ...

    react-react开发的网易云音乐

    4. **传统CSS文件**:在外部CSS文件中编写样式,然后通过link标签引入到React应用中。 项目名称“neteaseCloud-master”表明项目可能包含了整个网易云音乐应用的源码。在实际的项目结构中,我们通常会看到以下目录...

    React 简单demo

    import { BrowserRouter as Router, Route, Link } from 'react-router-dom'; import Header from './Header'; import MainContent from './MainContent'; import Footer from './Footer'; function App() { ...

    ReactRouter是React的一个完整路由库

    React Router的核心概念包括:`Route`、`Link`、`Switch`和`History`等。 1. **Route**: `Route`组件是React Router的基础,它定义了应用中的各个视图或页面。通过`path`属性来匹配URL,当URL与`path`相匹配时,`...

    react-react入门架手架搭建reactreactrouter40redux

    它提供了`&lt;Route&gt;`、`&lt;Switch&gt;`、`&lt;Link&gt;`等组件,帮助我们在应用中实现路由跳转和导航。 Redux则是为了管理React应用的状态而设计的。在大型应用中,组件之间的状态共享和传递可能会变得复杂,Redux提供了一个中心...

Global site tag (gtag.js) - Google Analytics