Skip to content

Instantly share code, notes, and snippets.

@xgqfrms-GitHub
Last active December 22, 2021 18:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save xgqfrms-GitHub/cc2598e0410542c504aa7fee4e2c8b9f to your computer and use it in GitHub Desktop.
Save xgqfrms-GitHub/cc2598e0410542c504aa7fee4e2c8b9f to your computer and use it in GitHub Desktop.
Stateless function components & no refs

Stateless function components & no refs

Invariant Violation: Stateless function components cannot have refs.

    
const styles = {
    width: "100px",
    height: "100px",
    border: "3px solid red"
};

const Card = (props) =>{
    return (
        <div>
            <button>username: {props.name}</button>
            <img src={props.avatar} style={styles}/>
            <p
                style={{color: "#0ff", fontSize: "23px"}}
                >
                {props.avatar}
            </p>
            <div>company : {props.company}</div>
        </div>
    );
};

const CardList = (props) =>{
    return (
        <div>
            {
                props.cards.map(
                    (card) => {
                        return (<Card {...card}/>);
                    }
                )
            }
        </div>
    );
};

const FormCard = (props) =>{
    return (
        <div>
            <form onSubmit={props.clickHandler}>
                <input
                    type="text"
                    placeholder="gitub username"
                    ref=""
                    id=""
                    required
                    />
                <button type="submit">
                    Add a New Card!
                </button>
            </form>
        </div>
    );
};


// fetch datas & map/loop array/object
const datas = [
    {
        name: "xgqfrms",
        avatar: "https://avatars1.githubusercontent.com/u/7291672?v=3",
        company: "xray"
    },
    {
        name: "xgqfrms007",
        avatar: "https://avatars1.githubusercontent.com/u/7291672?v=3",
        company: "ddinfo"
    },    {
        name: "xgqfrms2007",
        avatar: "https://avatars1.githubusercontent.com/u/7291672?v=3",
        company: "xyzdata"
    }
];


class App extends React.Component{
    constructor(props) {
        super(props);
        this.state = {
              counter: 1,
              cards: datas
        };
        // this.clickHandler = this.clickHandler.bind(this);
    }
    clickHandler = (e) => {
        // event.preventDefault();
        e.preventDefault();
        console.log(`clicked e = `, e);
        // return xxx;
    }
    render() {
        return (
            <div>
                <FormCard clickHandler={this.props.clickHandler} />
                <CardList cards={this.state.cards} />
            </div>
        );
    };
};


ReactDOM.render(
    <div>
        <App />
    </div>
    , mountNode
);

export default App;// write code here and click the execute button
@xgqfrms-GitHub
Copy link
Author

xgqfrms-GitHub commented Jun 30, 2017

React & event.preventDefault() & event.stopPropagation();

https://medium.com/@ericclemmons/react-event-preventdefault-78c28c950e46

https://github.com/erikras/react-native-listener

https://github.com/erikras/react-native-listener/blob/master/src/NativeListener.js
https://github.com/erikras/react-native-listener/blob/master/src/index.js

webpack.config.js (base & prod/dev)

https://github.com/erikras/react-native-listener/blob/master/webpack.config.base.js

https://github.com/erikras/react-native-listener/blob/master/webpack.config.production.js
https://github.com/erikras/react-native-listener/blob/master/webpack.config.development.js

event.preventDefault(); 
// Let's stop this event.
event.stopPropagation(); 
// Really this time.

ES6 export default & React

import React, {Component} from 'react';
import NativeListener from 'react-native-listener';

export default class MyComponent extends Component {
  render() {
    return (
      <div>
        <NativeListener stopClick>
          <a href="https://github.com/erikras/react-native-listener">Check out this awesome code!</a>
        </NativeListener>
      </div>
      );
  }
});
import React, {Component} from 'react';
import NativeListener from 'react-native-listener';

class MyComponent extends Component {
  render() {
    return (
      <div>
        <NativeListener stopClick>
          <a href="https://github.com/erikras/react-native-listener">Check out this awesome code!</a>
        </NativeListener>
      </div>
      );
  }
});
export default MyComponent;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment