Ecoer Logo

@fluidbyte

32

Software engineer, architect, manager, father, husband, other stuff...

steemit.com/@fluidbyte
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS51.91%
Net Worth
0.199USD
STEEM
0.000STEEM
SBD
0.339SBD
Effective Power
5.007SP
├── Own SP
0.633SP
└── Incoming Deleg
+4.373SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.633SP
Delegated Out
0.000SP
Delegation In
4.373SP
Effective Power
5.007SP
Reward SP (pending)
0.316SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.339SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1030.232689 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7113.427117 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.339 SBD",
  "conversions": []
}

Account Info

namefluidbyte
id371608
rank883,801
reputation5300771694
created2017-09-15T13:09:24
recovery_accountsteem
proxyNone
post_count4
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2017-09-20T14:32:03
last_root_post2017-09-20T14:32:03
last_vote_time2017-09-21T12:42:54
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares1030.232689 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7113.427117 VESTS
reward_vesting_balance650.715447 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2017-09-15T13:12:39
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "id": 371608,
  "name": "fluidbyte",
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5Lh5Ucuhr3j7mGd8EYdBFuEerJhSua1QhZhuJ481Vit86J4KXo",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6LFCK8pJpvdJoczxn1TvRyPsME9MmDD9MiULfSKhGstLwgusdB",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7hJHPMk2HzLFieUHq3bGN8Hy8LeyePCn31rV6MZm65hZKjS42K",
        1
      ]
    ]
  },
  "memo_key": "STM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7",
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg\",\"name\":\"Kent Safranski\",\"about\":\"Software engineer, architect, manager, father, husband, other stuff...\",\"location\":\"Holmen, Wisconsin\",\"website\":\"https://fluidbyte.github.io\"}}",
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg\",\"name\":\"Kent Safranski\",\"about\":\"Software engineer, architect, manager, father, husband, other stuff...\",\"location\":\"Holmen, Wisconsin\",\"website\":\"https://fluidbyte.github.io\"}}",
  "proxy": "",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_account_update": "2017-09-15T13:12:39",
  "created": "2017-09-15T13:09:24",
  "mined": false,
  "recovery_account": "steem",
  "last_account_recovery": "1970-01-01T00:00:00",
  "reset_account": "null",
  "comment_count": 0,
  "lifetime_vote_count": 0,
  "post_count": 4,
  "can_vote": true,
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779063723
  },
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779063723
  },
  "voting_power": 0,
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "sbd_balance": "0.000 SBD",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "reward_sbd_balance": "0.339 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "650.715447 VESTS",
  "reward_vesting_steem": "0.316 STEEM",
  "vesting_shares": "1030.232689 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7113.427117 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "withdrawn": 0,
  "to_withdraw": 0,
  "withdraw_routes": 0,
  "curation_rewards": 0,
  "posting_rewards": 631,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "witnesses_voted_for": 0,
  "last_post": "2017-09-20T14:32:03",
  "last_root_post": "2017-09-20T14:32:03",
  "last_vote_time": "2017-09-21T12:42:54",
  "post_bandwidth": 0,
  "pending_claimed_accounts": 0,
  "vesting_balance": "0.000 STEEM",
  "reputation": "5300771694",
  "transfer_history": [],
  "market_history": [],
  "post_history": [],
  "vote_history": [],
  "other_history": [],
  "witness_votes": [],
  "tags_usage": [],
  "guest_bloggers": [],
  "rank": 883801
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.373 SP to @fluidbyte
2026/05/18 00:22:03
delegateefluidbyte
delegatorsteem
vesting shares7113.427117 VESTS
Transaction InfoBlock #106143586/Trx 7900d76e8906420396e7bd8601db45d2f2501f93
View Raw JSON Data
{
  "block": 106143586,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "7113.427117 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-18T00:22:03",
  "trx_id": "7900d76e8906420396e7bd8601db45d2f2501f93",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.706 SP to @fluidbyte
2026/05/12 04:19:06
delegateefluidbyte
delegatorsteem
vesting shares4401.216712 VESTS
Transaction InfoBlock #105976284/Trx 9f886fb1a9c6f5d5901367fe261df71c6794f5f3
View Raw JSON Data
{
  "block": 105976284,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "4401.216712 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-12T04:19:06",
  "trx_id": "9f886fb1a9c6f5d5901367fe261df71c6794f5f3",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 4.381 SP to @fluidbyte
2026/04/25 23:42:45
delegateefluidbyte
delegatorsteem
vesting shares7125.942873 VESTS
Transaction InfoBlock #105511233/Trx 6eaaea1d84a6ca347fd7ea70ddfd7ab56310494b
View Raw JSON Data
{
  "block": 105511233,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "7125.942873 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-25T23:42:45",
  "trx_id": "6eaaea1d84a6ca347fd7ea70ddfd7ab56310494b",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 2.731 SP to @fluidbyte
2026/01/23 08:06:54
delegateefluidbyte
delegatorsteem
vesting shares4442.763531 VESTS
Transaction InfoBlock #102852185/Trx 5b113536bb4c5a338dff07f17168d064eed47b50
View Raw JSON Data
{
  "block": 102852185,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "4442.763531 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T08:06:54",
  "trx_id": "5b113536bb4c5a338dff07f17168d064eed47b50",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.832 SP to @fluidbyte
2024/12/17 03:25:42
delegateefluidbyte
delegatorsteem
vesting shares4606.982728 VESTS
Transaction InfoBlock #91298587/Trx e730e2f210979a9714d4ec51538bdd613aba9d81
View Raw JSON Data
{
  "block": 91298587,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "4606.982728 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-17T03:25:42",
  "trx_id": "e730e2f210979a9714d4ec51538bdd613aba9d81",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.936 SP to @fluidbyte
2023/11/13 19:08:36
delegateefluidbyte
delegatorsteem
vesting shares4776.116260 VESTS
Transaction InfoBlock #79852787/Trx ec66749a09b8e91571465a53aab697fbdbfb6add
View Raw JSON Data
{
  "block": 79852787,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "4776.116260 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-13T19:08:36",
  "trx_id": "ec66749a09b8e91571465a53aab697fbdbfb6add",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 4.742 SP to @fluidbyte
2023/09/21 21:57:54
delegateefluidbyte
delegatorsteem
vesting shares7713.395046 VESTS
Transaction InfoBlock #78347988/Trx c6192d493511723d35e33c59999854ce9b567ac3
View Raw JSON Data
{
  "block": 78347988,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "7713.395046 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-21T21:57:54",
  "trx_id": "c6192d493511723d35e33c59999854ce9b567ac3",
  "trx_in_block": 6,
  "virtual_op": 0
}
steemdelegated 4.878 SP to @fluidbyte
2022/11/03 11:44:30
delegateefluidbyte
delegatorsteem
vesting shares7935.076484 VESTS
Transaction InfoBlock #69113306/Trx 692c19195ba31197f003f4928ecca4886f644077
View Raw JSON Data
{
  "block": 69113306,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "7935.076484 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T11:44:30",
  "trx_id": "692c19195ba31197f003f4928ecca4886f644077",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.014 SP to @fluidbyte
2022/01/17 11:00:21
delegateefluidbyte
delegatorsteem
vesting shares8155.609715 VESTS
Transaction InfoBlock #60809471/Trx 611c326a201c4967a2111ba9d2a0880a16811484
View Raw JSON Data
{
  "block": 60809471,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8155.609715 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T11:00:21",
  "trx_id": "611c326a201c4967a2111ba9d2a0880a16811484",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 5.127 SP to @fluidbyte
2021/06/14 00:55:27
delegateefluidbyte
delegatorsteem
vesting shares8339.378373 VESTS
Transaction InfoBlock #54607856/Trx 10283f5e05cbf491ded4ca2bb39c8fdc9f9566e2
View Raw JSON Data
{
  "block": 54607856,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8339.378373 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-14T00:55:27",
  "trx_id": "10283f5e05cbf491ded4ca2bb39c8fdc9f9566e2",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 5.242 SP to @fluidbyte
2020/12/11 11:13:51
delegateefluidbyte
delegatorsteem
vesting shares8526.800347 VESTS
Transaction InfoBlock #49355305/Trx 672d81959e480a9fe04b85d8bdcd0406cf25464c
View Raw JSON Data
{
  "block": 49355305,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8526.800347 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T11:13:51",
  "trx_id": "672d81959e480a9fe04b85d8bdcd0406cf25464c",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @fluidbyte
2020/12/06 04:51:09
delegateefluidbyte
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49206868/Trx af96b1b89ea362f4e7a94c659e5910a85c0421cb
View Raw JSON Data
{
  "block": 49206868,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T04:51:09",
  "trx_id": "af96b1b89ea362f4e7a94c659e5910a85c0421cb",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.246 SP to @fluidbyte
2020/12/05 14:52:03
delegateefluidbyte
delegatorsteem
vesting shares8533.008201 VESTS
Transaction InfoBlock #49190401/Trx b63aee49a5a25ed7beed8d4c89193d5dd0fbb31b
View Raw JSON Data
{
  "block": 49190401,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8533.008201 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-05T14:52:03",
  "trx_id": "b63aee49a5a25ed7beed8d4c89193d5dd0fbb31b",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 1.180 SP to @fluidbyte
2020/11/02 15:51:45
delegateefluidbyte
delegatorsteem
vesting shares1920.017158 VESTS
Transaction InfoBlock #48258064/Trx b21af567f56ebdd9fd712cbbd5d7446c8e1c3d8c
View Raw JSON Data
{
  "block": 48258064,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "1920.017158 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-02T15:51:45",
  "trx_id": "b21af567f56ebdd9fd712cbbd5d7446c8e1c3d8c",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 5.371 SP to @fluidbyte
2020/05/09 05:48:30
delegateefluidbyte
delegatorsteem
vesting shares8735.813560 VESTS
Transaction InfoBlock #43217116/Trx f12f2e66503fa91be781aac43088a4529a7ef5af
View Raw JSON Data
{
  "block": 43217116,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8735.813560 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T05:48:30",
  "trx_id": "f12f2e66503fa91be781aac43088a4529a7ef5af",
  "trx_in_block": 21,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @fluidbyte
2020/05/08 09:25:39
delegateefluidbyte
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43193235/Trx a72227d12ddee0d1bbb07c63a31a76dc00452233
View Raw JSON Data
{
  "block": 43193235,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T09:25:39",
  "trx_id": "a72227d12ddee0d1bbb07c63a31a76dc00452233",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 5.379 SP to @fluidbyte
2020/04/15 21:39:54
delegateefluidbyte
delegatorsteem
vesting shares8748.790979 VESTS
Transaction InfoBlock #42562618/Trx 1e9d1b21e40fbf3f68c688d8d1d2bc604ed5461a
View Raw JSON Data
{
  "block": 42562618,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8748.790979 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-04-15T21:39:54",
  "trx_id": "1e9d1b21e40fbf3f68c688d8d1d2bc604ed5461a",
  "trx_in_block": 4,
  "virtual_op": 0
}
2019/09/15 14:05:48
authorsteemitboard
bodyCongratulations @fluidbyte! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@fluidbyte/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@fluidbyte) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=fluidbyte)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorfluidbyte
parent permlinka-no-bs-dive-into-reactjs
permlinksteemitboard-notify-fluidbyte-20190915t140547000z
title
Transaction InfoBlock #36444852/Trx aeb41cd801f85e561e673add36a84963450a698e
View Raw JSON Data
{
  "block": 36444852,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @fluidbyte! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@fluidbyte/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@fluidbyte) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=fluidbyte)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "fluidbyte",
      "parent_permlink": "a-no-bs-dive-into-reactjs",
      "permlink": "steemitboard-notify-fluidbyte-20190915t140547000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-09-15T14:05:48",
  "trx_id": "aeb41cd801f85e561e673add36a84963450a698e",
  "trx_in_block": 12,
  "virtual_op": 0
}
steemdelegated 5.499 SP to @fluidbyte
2019/05/12 14:54:45
delegateefluidbyte
delegatorsteem
vesting shares8944.413784 VESTS
Transaction InfoBlock #32845498/Trx fd4ecd5a4b15150b6b4aa6c4f808899989cc73d7
View Raw JSON Data
{
  "block": 32845498,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "8944.413784 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-05-12T14:54:45",
  "trx_id": "fd4ecd5a4b15150b6b4aa6c4f808899989cc73d7",
  "trx_in_block": 15,
  "virtual_op": 0
}
steemdelegated 5.622 SP to @fluidbyte
2018/05/16 20:17:36
delegateefluidbyte
delegatorsteem
vesting shares9143.966219 VESTS
Transaction InfoBlock #22489853/Trx 2fadc31509b28580a3a769d4b0f3d8c9fe8a5a2a
View Raw JSON Data
{
  "block": 22489853,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "9143.966219 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-05-16T20:17:36",
  "trx_id": "2fadc31509b28580a3a769d4b0f3d8c9fe8a5a2a",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/02/24 20:33:09
authorfluidbyte
permlinkhooray-steemit
voterddeveloperr
weight10000 (100.00%)
Transaction InfoBlock #20159883/Trx 0b5a32704a4d397436a925398d6cfa86d85b7f7a
View Raw JSON Data
{
  "block": 20159883,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "ddeveloperr",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-24T20:33:09",
  "trx_id": "0b5a32704a4d397436a925398d6cfa86d85b7f7a",
  "trx_in_block": 30,
  "virtual_op": 0
}
2018/02/24 20:21:24
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterddeveloperr
weight10000 (100.00%)
Transaction InfoBlock #20159648/Trx 367fbdf31708f546b64a3b5accc4ffe9b272e271
View Raw JSON Data
{
  "block": 20159648,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "ddeveloperr",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-24T20:21:24",
  "trx_id": "367fbdf31708f546b64a3b5accc4ffe9b272e271",
  "trx_in_block": 14,
  "virtual_op": 0
}
steemdelegated 18.214 SP to @fluidbyte
2018/02/22 12:20:36
delegateefluidbyte
delegatorsteem
vesting shares29625.891220 VESTS
Transaction InfoBlock #20092440/Trx afdf84453cd5d6587fc222c237cffae91b4463be
View Raw JSON Data
{
  "block": 20092440,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "29625.891220 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-02-22T12:20:36",
  "trx_id": "afdf84453cd5d6587fc222c237cffae91b4463be",
  "trx_in_block": 7,
  "virtual_op": 0
}
2018/01/28 05:37:15
authorattette
bodyIt's only for IOS and Mac, not android..anyway, thanks for tip
json metadata{"tags":["steemit-ideas"],"app":"steemit/0.1"}
parent authorfluidbyte
parent permlinkre-bacchist-save-draft-posts-20170915t142041730z
permlinkre-fluidbyte-re-bacchist-save-draft-posts-20180128t053713299z
title
Transaction InfoBlock #19365214/Trx 961f0986ff841a1c6a479ea079c2b832171d0430
View Raw JSON Data
{
  "block": 19365214,
  "op": [
    "comment",
    {
      "author": "attette",
      "body": "It's only for IOS and Mac, not android..anyway, thanks for tip",
      "json_metadata": "{\"tags\":[\"steemit-ideas\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "fluidbyte",
      "parent_permlink": "re-bacchist-save-draft-posts-20170915t142041730z",
      "permlink": "re-fluidbyte-re-bacchist-save-draft-posts-20180128t053713299z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-28T05:37:15",
  "trx_id": "961f0986ff841a1c6a479ea079c2b832171d0430",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/12/18 01:38:42
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votersuperoo7
weight10000 (100.00%)
Transaction InfoBlock #18180516/Trx 35ef820ac034a24d345684973e3e0ba5cb307f14
View Raw JSON Data
{
  "block": 18180516,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "superoo7",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-12-18T01:38:42",
  "trx_id": "35ef820ac034a24d345684973e3e0ba5cb307f14",
  "trx_in_block": 20,
  "virtual_op": 0
}
2017/12/06 23:34:57
authorfluidbyte
permlinkre-bacchist-save-draft-posts-20170915t142041730z
voterrossharman
weight10000 (100.00%)
Transaction InfoBlock #17861361/Trx 0b0b27cc489a2bec4b4f533b96eb8d9f58296b2b
View Raw JSON Data
{
  "block": 17861361,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "re-bacchist-save-draft-posts-20170915t142041730z",
      "voter": "rossharman",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-12-06T23:34:57",
  "trx_id": "0b0b27cc489a2bec4b4f533b96eb8d9f58296b2b",
  "trx_in_block": 19,
  "virtual_op": 0
}
2017/11/25 12:54:45
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterarn-big-beard
weight10000 (100.00%)
Transaction InfoBlock #17531914/Trx 534e5143f03677226af121204a9a79724885cbfa
View Raw JSON Data
{
  "block": 17531914,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "arn-big-beard",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-25T12:54:45",
  "trx_id": "534e5143f03677226af121204a9a79724885cbfa",
  "trx_in_block": 22,
  "virtual_op": 0
}
steemdelegated 18.340 SP to @fluidbyte
2017/10/13 16:02:09
delegateefluidbyte
delegatorsteem
vesting shares29830.767311 VESTS
Transaction InfoBlock #16298228/Trx 0195970043847f8c1311548074f57064c5a6ecbb
View Raw JSON Data
{
  "block": 16298228,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "fluidbyte",
      "delegator": "steem",
      "vesting_shares": "29830.767311 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-13T16:02:09",
  "trx_id": "0195970043847f8c1311548074f57064c5a6ecbb",
  "trx_in_block": 7,
  "virtual_op": 0
}
atherzupvoted (100.00%) @fluidbyte / hooray-steemit
2017/10/10 01:40:48
authorfluidbyte
permlinkhooray-steemit
voteratherz
weight10000 (100.00%)
Transaction InfoBlock #16194685/Trx 83315b714414ac7dcfa13e74278a8784536919a2
View Raw JSON Data
{
  "block": 16194685,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "atherz",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-10-10T01:40:48",
  "trx_id": "83315b714414ac7dcfa13e74278a8784536919a2",
  "trx_in_block": 15,
  "virtual_op": 0
}
fluidbytereceived 0.299 SBD, 0.351 SP author reward for @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/27 14:32:03
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
sbd payout0.299 SBD
steem payout0.000 STEEM
vesting payout570.387049 VESTS
Transaction InfoBlock #15835947/Virtual Operation #9
View Raw JSON Data
{
  "block": 15835947,
  "op": [
    "author_reward",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "sbd_payout": "0.299 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "570.387049 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-27T14:32:03",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 9
}
2017/09/27 14:26:21
authorfluidbyte
permlinkhooray-steemit
voterwinstonalden
weight2500 (25.00%)
Transaction InfoBlock #15835834/Trx 3224b8d66cfc5ebafda7d8cd68dfbda47e8351a8
View Raw JSON Data
{
  "block": 15835834,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "winstonalden",
      "weight": 2500
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-27T14:26:21",
  "trx_id": "3224b8d66cfc5ebafda7d8cd68dfbda47e8351a8",
  "trx_in_block": 15,
  "virtual_op": 0
}
2017/09/24 20:53:54
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterjfuenmayor96
weight10000 (100.00%)
Transaction InfoBlock #15757209/Trx 519c4f8a6439c0fbd5755aad89450cc99ce33291
View Raw JSON Data
{
  "block": 15757209,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "jfuenmayor96",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-24T20:53:54",
  "trx_id": "519c4f8a6439c0fbd5755aad89450cc99ce33291",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/09/22 19:31:24
authordoitvoluntarily
bodywelcome to steemit!:)
json metadata{"tags":["hello"],"app":"steemit/0.1"}
parent authorfluidbyte
parent permlinkhooray-steemit
permlinkre-fluidbyte-hooray-steemit-20170922t193124534z
title
Transaction InfoBlock #15697967/Trx 293909a61220a982208a56cbb89be8c809e66599
View Raw JSON Data
{
  "block": 15697967,
  "op": [
    "comment",
    {
      "author": "doitvoluntarily",
      "body": "welcome to steemit!:)",
      "json_metadata": "{\"tags\":[\"hello\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "fluidbyte",
      "parent_permlink": "hooray-steemit",
      "permlink": "re-fluidbyte-hooray-steemit-20170922t193124534z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-22T19:31:24",
  "trx_id": "293909a61220a982208a56cbb89be8c809e66599",
  "trx_in_block": 19,
  "virtual_op": 0
}
2017/09/22 19:31:00
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterdoitvoluntarily
weight10000 (100.00%)
Transaction InfoBlock #15697959/Trx 7a9a96e51c509e4e66047ab7ea034df2e238a1be
View Raw JSON Data
{
  "block": 15697959,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "doitvoluntarily",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-22T19:31:00",
  "trx_id": "7a9a96e51c509e4e66047ab7ea034df2e238a1be",
  "trx_in_block": 12,
  "virtual_op": 0
}
2017/09/22 13:22:36
authorfluidbyte
permlinkre-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z
sbd payout0.018 SBD
steem payout0.000 STEEM
vesting payout37.074641 VESTS
Transaction InfoBlock #15690590/Virtual Operation #4
View Raw JSON Data
{
  "block": 15690590,
  "op": [
    "author_reward",
    {
      "author": "fluidbyte",
      "permlink": "re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z",
      "sbd_payout": "0.018 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "37.074641 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-22T13:22:36",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 4
}
fluidbytereceived 0.022 SBD, 0.027 SP author reward for @fluidbyte / hooray-steemit
2017/09/22 13:16:27
authorfluidbyte
permlinkhooray-steemit
sbd payout0.022 SBD
steem payout0.000 STEEM
vesting payout43.253757 VESTS
Transaction InfoBlock #15690467/Virtual Operation #10
View Raw JSON Data
{
  "block": 15690467,
  "op": [
    "author_reward",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "sbd_payout": "0.022 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "43.253757 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-22T13:16:27",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 10
}
2017/09/22 12:14:30
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterpetarjs
weight10000 (100.00%)
Transaction InfoBlock #15689229/Trx ae75d3ba78db5c654709483f1347d63c6fce8688
View Raw JSON Data
{
  "block": 15689229,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "petarjs",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-22T12:14:30",
  "trx_id": "ae75d3ba78db5c654709483f1347d63c6fce8688",
  "trx_in_block": 22,
  "virtual_op": 0
}
2017/09/21 15:28:36
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterharps116
weight10000 (100.00%)
Transaction InfoBlock #15664311/Trx 9dff5b43dd85339ee90ae10f5f054db8f1f9fa51
View Raw JSON Data
{
  "block": 15664311,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "harps116",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T15:28:36",
  "trx_id": "9dff5b43dd85339ee90ae10f5f054db8f1f9fa51",
  "trx_in_block": 20,
  "virtual_op": 0
}
2017/09/21 12:42:54
authorsteemitboard
permlinksteemitboard-notify-fluidbyte-20170921t052835000z
voterfluidbyte
weight10000 (100.00%)
Transaction InfoBlock #15660998/Trx f41b0a67bef5ac6a1827b48d4732ffe438cc0d2f
View Raw JSON Data
{
  "block": 15660998,
  "op": [
    "vote",
    {
      "author": "steemitboard",
      "permlink": "steemitboard-notify-fluidbyte-20170921t052835000z",
      "voter": "fluidbyte",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T12:42:54",
  "trx_id": "f41b0a67bef5ac6a1827b48d4732ffe438cc0d2f",
  "trx_in_block": 25,
  "virtual_op": 0
}
2017/09/21 05:28:42
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterlocikll
weight10 (0.10%)
Transaction InfoBlock #15652314/Trx a8e3f0528293b1f174c11c327efadc2193010023
View Raw JSON Data
{
  "block": 15652314,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "locikll",
      "weight": 10
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T05:28:42",
  "trx_id": "a8e3f0528293b1f174c11c327efadc2193010023",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/09/21 05:28:36
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votersteemitboard
weight100 (1.00%)
Transaction InfoBlock #15652312/Trx 4c375e469d8aeffc8c612e67cee9cd7557ebe420
View Raw JSON Data
{
  "block": 15652312,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "steemitboard",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T05:28:36",
  "trx_id": "4c375e469d8aeffc8c612e67cee9cd7557ebe420",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/09/21 05:28:33
authorsteemitboard
bodyCongratulations @fluidbyte! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/voted.png)](http://steemitboard.com/@fluidbyte) Award for the number of upvotes received Click on any badge to view your own Board of Honor on SteemitBoard. For more information about SteemitBoard, click [here](https://steemit.com/@steemitboard) If you no longer want to receive notifications, reply to this comment with the word `STOP` > By upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!
json metadata{"image":["https://steemitboard.com/img/notifications.png"]}
parent authorfluidbyte
parent permlinka-no-bs-dive-into-reactjs
permlinksteemitboard-notify-fluidbyte-20170921t052835000z
title
Transaction InfoBlock #15652311/Trx 1489a912aeca15fbf13695477cd9e2cb628dcc8c
View Raw JSON Data
{
  "block": 15652311,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @fluidbyte! You have completed some achievement on Steemit and have been rewarded with new badge(s) :\n\n[![](https://steemitimages.com/70x80/http://steemitboard.com/notifications/voted.png)](http://steemitboard.com/@fluidbyte) Award for the number of upvotes received\n\nClick on any badge to view your own Board of Honor on SteemitBoard.\nFor more information about SteemitBoard, click [here](https://steemit.com/@steemitboard)\n\nIf you no longer want to receive notifications, reply to this comment with the word `STOP`\n\n> By upvoting this notification, you can help all Steemit users. Learn how [here](https://steemit.com/steemitboard/@steemitboard/http-i-cubeupload-com-7ciqeo-png)!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notifications.png\"]}",
      "parent_author": "fluidbyte",
      "parent_permlink": "a-no-bs-dive-into-reactjs",
      "permlink": "steemitboard-notify-fluidbyte-20170921t052835000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T05:28:33",
  "trx_id": "1489a912aeca15fbf13695477cd9e2cb628dcc8c",
  "trx_in_block": 24,
  "virtual_op": 0
}
2017/09/21 02:51:21
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterkkomaz
weight10000 (100.00%)
Transaction InfoBlock #15649169/Trx 7a360eebdff4e41a2aa54884f09b3380a62bf88f
View Raw JSON Data
{
  "block": 15649169,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "kkomaz",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-21T02:51:21",
  "trx_id": "7a360eebdff4e41a2aa54884f09b3380a62bf88f",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/09/20 21:58:15
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votertage
weight10000 (100.00%)
Transaction InfoBlock #15643311/Trx 72f0f646ef99d0d0b3243de1c740df95edd393f9
View Raw JSON Data
{
  "block": 15643311,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "tage",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T21:58:15",
  "trx_id": "72f0f646ef99d0d0b3243de1c740df95edd393f9",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/09/20 21:56:06
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterdaartfulvlogger
weight10000 (100.00%)
Transaction InfoBlock #15643269/Trx 2ac47a21e36b6ea8330928b5cfe6ef2c7d8b9ad1
View Raw JSON Data
{
  "block": 15643269,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "daartfulvlogger",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T21:56:06",
  "trx_id": "2ac47a21e36b6ea8330928b5cfe6ef2c7d8b9ad1",
  "trx_in_block": 22,
  "virtual_op": 0
}
2017/09/20 20:14:33
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votergarudi
weight2000 (20.00%)
Transaction InfoBlock #15641239/Trx bab2491e45b7dd40cc4ab5527ad1b706be2c1cdb
View Raw JSON Data
{
  "block": 15641239,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "garudi",
      "weight": 2000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T20:14:33",
  "trx_id": "bab2491e45b7dd40cc4ab5527ad1b706be2c1cdb",
  "trx_in_block": 22,
  "virtual_op": 0
}
2017/09/20 20:14:27
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votereturnerx
weight2000 (20.00%)
Transaction InfoBlock #15641237/Trx c678b9c65a35fd9eed69fc5cc4b351e1a59babdf
View Raw JSON Data
{
  "block": 15641237,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "eturnerx",
      "weight": 2000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T20:14:27",
  "trx_id": "c678b9c65a35fd9eed69fc5cc4b351e1a59babdf",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/09/20 18:06:54
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
votermatthewdavid
weight10000 (100.00%)
Transaction InfoBlock #15638688/Trx 843128365898ae5358100d693c1e659b9b7e2590
View Raw JSON Data
{
  "block": 15638688,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "matthewdavid",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T18:06:54",
  "trx_id": "843128365898ae5358100d693c1e659b9b7e2590",
  "trx_in_block": 31,
  "virtual_op": 0
}
2017/09/20 15:55:24
authorfluidbyte
body![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png) Many of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code. ## The Setup - [CodePen](https://codepen.io) [CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily. * On a new "pen", go to `Settings` and then `JavaScript`. * For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6. * In the `Add External JavaScript` section add the following: * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library * Click `Save & Close` The pen is now setup to allow us to write in ES6, utilizing the React framework. ## Writing Some Code > Code-first, explain later. This seems to be a great way to learn, so let's jump in! ### Give Your App a Home This first one is easy; in the `HTML` editor drop this: ```html <div id="app"></app> ``` We need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON! ### Render Something In the `JavaScript` editor, enter the following: ```javascript class MyComponent extends React.Component { render() { return ( <h1> Hello React! </h1> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)** The above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following: 1. Created a new class called `MyComponent` that extends React's `Component` class. 2. We defined a `render` method for that class so React knows what to render. 3. We added something to actually render to the `render` method (via the `return`). 4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section. Congratulations! That's how to build a component. Let's make more! ### Adding Components, Using Properties Let's add another component, it's so much fun! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { render() { return ( <div> <h1> Hello React! </h1> <ul> <ListItem content="Build a component" /> <ListItem content="Add more components" /> </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)** Alright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces. So we've done the following: 1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`) 2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`. 3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent. ### Using State The components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously: ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ] } } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)** So there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class: 1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things: 1. We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard 2. We initialized state by creating a `this.state` object which contains an array of `items` 2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration. So now when `MyComponent` renders it loads all of its content from the state. Nice! ## Using Events to Change State State is cool, but fairly useless without some interaction, so let's add that with events! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ], newItem: '' } // Have to do this because Codepen doesn't support // stage-3 es6, normally wouldn't need this... this.onChangeNewItem = this.onChangeNewItem.bind(this) this.onSubmitNewItem = this.onSubmitNewItem.bind(this) } onChangeNewItem (e) { this.setState({ newItem: e.target.value }) } onSubmitNewItem (e) { const newItems = this.state.items.concat(this.state.newItem) this.setState({ items: newItems, newItem: '' }) e.preventDefault() } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> <form onSubmit={this.onSubmitNewItem}> <input type="text" onChange={this.onChangeNewItem} value={this.state.newItem} /> <button type="submit">Submit</button> </form> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)** Again, we're expanding on what we already have, so looking at what was added: 1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list. 2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor. 3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is. 4. We create a `onSubmitNewItem` which will do several things: 1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks) 2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form) 3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form) 5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method. 6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state. Now, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow! ## Conclusion This was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events. These are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications. I plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here. If you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!
json metadata{"tags":["javascript","react","technology","tutorial","reactjs"],"image":["https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png"],"links":["https://facebook.github.io/react/","https://codepen.io","https://codepen.io/fluidbyte/pen/GMooWW?editors=0010","https://codepen.io/fluidbyte/pen/veGbNg?editors=0010","https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010","https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkreactjs
permlinka-no-bs-dive-into-reactjs
titleA No-BS Dive Into ReactJS
Transaction InfoBlock #15636060/Trx 1778f06ad262a3e896a34ecaccf0a5f65776ccf7
View Raw JSON Data
{
  "block": 15636060,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png)\n\nMany of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code.\n\n## The Setup - [CodePen](https://codepen.io)\n\n[CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily.\n\n* On a new \"pen\", go to `Settings` and then `JavaScript`.\n* For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6.\n* In the `Add External JavaScript` section add the following:\n  * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library\n* Click `Save & Close`\n\nThe pen is now setup to allow us to write in ES6, utilizing the React framework.\n\n## Writing Some Code\n\n> Code-first, explain later.\n\nThis seems to be a great way to learn, so let's jump in! \n\n### Give Your App a Home\n\nThis first one is easy; in the `HTML` editor drop this:\n\n```html\n<div id=\"app\"></app>\n```\n\nWe need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON!\n\n### Render Something\n\nIn the `JavaScript` editor, enter the following:\n\n```javascript\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <h1>\n            Hello React!\n        </h1>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)**\n\nThe above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following:\n\n1. Created a new class called `MyComponent` that extends React's `Component` class.\n2. We defined a `render` method for that class so React knows what to render.\n3. We added something to actually render to the `render` method (via the `return`).\n4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section.\n\nCongratulations! That's how to build a component. Let's make more!\n\n### Adding Components, Using Properties\n\nLet's add another component, it's so much fun!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            <ListItem content=\"Build a component\" />\n            <ListItem content=\"Add more components\" />\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)**\n\nAlright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces.\n\nSo we've done the following:\n\n1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`)\n2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`.\n3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent.\n\n### Using State\n\nThe components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously:\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ]\n      }\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)**\n\nSo there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class:\n\n1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things:\n    1.  We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard\n    2.  We initialized state by creating a `this.state` object which contains an array of `items`\n2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration.\n\nSo now when `MyComponent` renders it loads all of its content from the state. Nice!\n\n## Using Events to Change State\n\nState is cool, but fairly useless without some interaction, so let's add that with events!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ],\n        newItem: ''\n      }\n      \n      // Have to do this because Codepen doesn't support\n      // stage-3 es6, normally wouldn't need this...\n      this.onChangeNewItem = this.onChangeNewItem.bind(this)\n      this.onSubmitNewItem = this.onSubmitNewItem.bind(this)\n    }\n  \n    onChangeNewItem (e) {\n      this.setState({\n        newItem: e.target.value\n      })\n    }\n  \n    onSubmitNewItem (e) {\n      const newItems = this.state.items.concat(this.state.newItem)\n      this.setState({\n        items: newItems,\n        newItem: ''\n      })\n      e.preventDefault()\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n          <form onSubmit={this.onSubmitNewItem}>\n            <input \n              type=\"text\"\n              onChange={this.onChangeNewItem}\n              value={this.state.newItem}\n            />\n            <button type=\"submit\">Submit</button>\n          </form>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)**\n\nAgain, we're expanding on what we already have, so looking at what was added:\n\n1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list.\n2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor.\n3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is.\n4. We create a `onSubmitNewItem` which will do several things:\n    1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks)\n    2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form)\n    3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form)\n5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method.\n6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state.\n\nNow, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow!\n\n## Conclusion\n\nThis was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events.\n\nThese are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications.\n\nI plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here.\n\nIf you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!",
      "json_metadata": "{\"tags\":[\"javascript\",\"react\",\"technology\",\"tutorial\",\"reactjs\"],\"image\":[\"https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png\"],\"links\":[\"https://facebook.github.io/react/\",\"https://codepen.io\",\"https://codepen.io/fluidbyte/pen/GMooWW?editors=0010\",\"https://codepen.io/fluidbyte/pen/veGbNg?editors=0010\",\"https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010\",\"https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "reactjs",
      "permlink": "a-no-bs-dive-into-reactjs",
      "title": "A No-BS Dive Into ReactJS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T15:55:24",
  "trx_id": "1778f06ad262a3e896a34ecaccf0a5f65776ccf7",
  "trx_in_block": 6,
  "virtual_op": 0
}
2017/09/20 15:53:42
authorfluidbyte
permlinka-no-bs-dive-into-reactjs
voterdsantrat
weight10000 (100.00%)
Transaction InfoBlock #15636026/Trx 7e38901f9fe09acc0f464bdddff9d666807c71ee
View Raw JSON Data
{
  "block": 15636026,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "a-no-bs-dive-into-reactjs",
      "voter": "dsantrat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T15:53:42",
  "trx_id": "7e38901f9fe09acc0f464bdddff9d666807c71ee",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/09/20 15:41:33
authorfluidbyte
body![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png) Many of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code. ## The Setup - [CodePen](https://codepen.io) [CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily. * On a new "pen", go to `Settings` and then `JavaScript`. * For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6. * In the `Add External JavaScript` section add the following: * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library * Click `Save & Close` The pen is now setup to allow us to write in ES6, utilizing the React framework. ## Writing Some Code > Code-first, explain later. This seems to be a great way to learn, so let's jump in! ### Give Your App a Home This first one is easy; in the `HTML` editor drop this: ```html <div id="app"></app> ``` We need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON! ### Render Something In the `JavaScript` editor, enter the following: ```javascript class MyComponent extends React.Component { render() { return ( <h1> Hello React! </h1> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)** The above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following: 1. Created a new class called `MyComponent` that extends React's `Component` class. 2. We defined a `render` method for that class so React knows what to render. 3. We added something to actually render to the `render` method (via the `return`). 4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section. Congratulations! That's how to build a component. Let's make more! ### Adding Components, Using Properties Let's add another component, it's so much fun! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { render() { return ( <div> <h1> Hello React! </h1> <ul> <ListItem content="Build a component" /> <ListItem content="Add more components" /> </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)** Alright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces. So we've done the following: 1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`) 2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`. 3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent. ### Using State The components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously: ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ] } } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)** So there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class: 1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things: 1. We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard 2. We initialized state by creating a `this.state` object which contains an array of `items` 2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration. So now when `MyComponent` renders it loads all of its content from the state. Nice! ## Using Events to Change State State is cool, but fairly useless without some interaction, so let's add that with events! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ], newItem: '' } // Have to do this because Codepen doesn't support // stage-3 es6, normally wouldn't need this... this.onChangeNewItem = this.onChangeNewItem.bind(this) this.onSubmitNewItem = this.onSubmitNewItem.bind(this) } onChangeNewItem (e) { this.setState({ newItem: e.target.value }) } onSubmitNewItem (e) { const newItems = this.state.items.concat(this.state.newItem) this.setState({ items: newItems, newItem: '' }) e.preventDefault() } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> <form onSubmit={this.onSubmitNewItem}> <input type="text" onChange={this.onChangeNewItem} value={this.state.newItem} /> <button type="submit">Submit</button> </form> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)** Again, we're expanding on what we already have, so looking at what was added: 1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list. 2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor. 3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is. 4. We create a `onSubmitNewItem` which will do several things: 1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks) 2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form) 3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form) 5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method. 6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state. Now, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow! ## Conclusion This was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events. These are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications. I plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here. If you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!
json metadata{"tags":["reactjs","react","javascript","tutorial"],"image":["https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png"],"links":["https://facebook.github.io/react/","https://codepen.io","https://codepen.io/fluidbyte/pen/GMooWW?editors=0010","https://codepen.io/fluidbyte/pen/veGbNg?editors=0010","https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010","https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkreactjs
permlinka-no-bs-dive-into-reactjs
titleA No-BS Dive Into ReactJS
Transaction InfoBlock #15635783/Trx 92f941af876d6ae424565669256c2a7e8161d0ce
View Raw JSON Data
{
  "block": 15635783,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png)\n\nMany of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code.\n\n## The Setup - [CodePen](https://codepen.io)\n\n[CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily.\n\n* On a new \"pen\", go to `Settings` and then `JavaScript`.\n* For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6.\n* In the `Add External JavaScript` section add the following:\n  * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library\n* Click `Save & Close`\n\nThe pen is now setup to allow us to write in ES6, utilizing the React framework.\n\n## Writing Some Code\n\n> Code-first, explain later.\n\nThis seems to be a great way to learn, so let's jump in! \n\n### Give Your App a Home\n\nThis first one is easy; in the `HTML` editor drop this:\n\n```html\n<div id=\"app\"></app>\n```\n\nWe need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON!\n\n### Render Something\n\nIn the `JavaScript` editor, enter the following:\n\n```javascript\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <h1>\n            Hello React!\n        </h1>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)**\n\nThe above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following:\n\n1. Created a new class called `MyComponent` that extends React's `Component` class.\n2. We defined a `render` method for that class so React knows what to render.\n3. We added something to actually render to the `render` method (via the `return`).\n4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section.\n\nCongratulations! That's how to build a component. Let's make more!\n\n### Adding Components, Using Properties\n\nLet's add another component, it's so much fun!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            <ListItem content=\"Build a component\" />\n            <ListItem content=\"Add more components\" />\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)**\n\nAlright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces.\n\nSo we've done the following:\n\n1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`)\n2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`.\n3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent.\n\n### Using State\n\nThe components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously:\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ]\n      }\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)**\n\nSo there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class:\n\n1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things:\n    1.  We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard\n    2.  We initialized state by creating a `this.state` object which contains an array of `items`\n2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration.\n\nSo now when `MyComponent` renders it loads all of its content from the state. Nice!\n\n## Using Events to Change State\n\nState is cool, but fairly useless without some interaction, so let's add that with events!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ],\n        newItem: ''\n      }\n      \n      // Have to do this because Codepen doesn't support\n      // stage-3 es6, normally wouldn't need this...\n      this.onChangeNewItem = this.onChangeNewItem.bind(this)\n      this.onSubmitNewItem = this.onSubmitNewItem.bind(this)\n    }\n  \n    onChangeNewItem (e) {\n      this.setState({\n        newItem: e.target.value\n      })\n    }\n  \n    onSubmitNewItem (e) {\n      const newItems = this.state.items.concat(this.state.newItem)\n      this.setState({\n        items: newItems,\n        newItem: ''\n      })\n      e.preventDefault()\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n          <form onSubmit={this.onSubmitNewItem}>\n            <input \n              type=\"text\"\n              onChange={this.onChangeNewItem}\n              value={this.state.newItem}\n            />\n            <button type=\"submit\">Submit</button>\n          </form>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)**\n\nAgain, we're expanding on what we already have, so looking at what was added:\n\n1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list.\n2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor.\n3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is.\n4. We create a `onSubmitNewItem` which will do several things:\n    1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks)\n    2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form)\n    3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form)\n5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method.\n6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state.\n\nNow, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow!\n\n## Conclusion\n\nThis was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events.\n\nThese are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications.\n\nI plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here.\n\nIf you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!",
      "json_metadata": "{\"tags\":[\"reactjs\",\"react\",\"javascript\",\"tutorial\"],\"image\":[\"https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png\"],\"links\":[\"https://facebook.github.io/react/\",\"https://codepen.io\",\"https://codepen.io/fluidbyte/pen/GMooWW?editors=0010\",\"https://codepen.io/fluidbyte/pen/veGbNg?editors=0010\",\"https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010\",\"https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "reactjs",
      "permlink": "a-no-bs-dive-into-reactjs",
      "title": "A No-BS Dive Into ReactJS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T15:41:33",
  "trx_id": "92f941af876d6ae424565669256c2a7e8161d0ce",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/09/20 14:35:57
authorfluidbyte
body@@ -1315,18 +1315,16 @@ t, expla -na in later
json metadata{"tags":["reactjs","javascript","tutorial"],"image":["https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png"],"links":["https://facebook.github.io/react/","https://codepen.io","https://codepen.io/fluidbyte/pen/GMooWW?editors=0010","https://codepen.io/fluidbyte/pen/veGbNg?editors=0010","https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010","https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkreactjs
permlinka-no-bs-dive-into-reactjs
titleA No-BS Dive Into ReactJS
Transaction InfoBlock #15634472/Trx ea37511a1077cf38ca88413ddcc091af2654a57b
View Raw JSON Data
{
  "block": 15634472,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "@@ -1315,18 +1315,16 @@\n t, expla\n-na\n in later\n",
      "json_metadata": "{\"tags\":[\"reactjs\",\"javascript\",\"tutorial\"],\"image\":[\"https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png\"],\"links\":[\"https://facebook.github.io/react/\",\"https://codepen.io\",\"https://codepen.io/fluidbyte/pen/GMooWW?editors=0010\",\"https://codepen.io/fluidbyte/pen/veGbNg?editors=0010\",\"https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010\",\"https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "reactjs",
      "permlink": "a-no-bs-dive-into-reactjs",
      "title": "A No-BS Dive Into ReactJS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T14:35:57",
  "trx_id": "ea37511a1077cf38ca88413ddcc091af2654a57b",
  "trx_in_block": 5,
  "virtual_op": 0
}
2017/09/20 14:32:03
authorfluidbyte
body![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png) Many of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code. ## The Setup - [CodePen](https://codepen.io) [CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily. * On a new "pen", go to `Settings` and then `JavaScript`. * For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6. * In the `Add External JavaScript` section add the following: * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library * Click `Save & Close` The pen is now setup to allow us to write in ES6, utilizing the React framework. ## Writing Some Code > Code-first, explanain later. This seems to be a great way to learn, so let's jump in! ### Give Your App a Home This first one is easy; in the `HTML` editor drop this: ```html <div id="app"></app> ``` We need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON! ### Render Something In the `JavaScript` editor, enter the following: ```javascript class MyComponent extends React.Component { render() { return ( <h1> Hello React! </h1> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)** The above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following: 1. Created a new class called `MyComponent` that extends React's `Component` class. 2. We defined a `render` method for that class so React knows what to render. 3. We added something to actually render to the `render` method (via the `return`). 4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section. Congratulations! That's how to build a component. Let's make more! ### Adding Components, Using Properties Let's add another component, it's so much fun! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { render() { return ( <div> <h1> Hello React! </h1> <ul> <ListItem content="Build a component" /> <ListItem content="Add more components" /> </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)** Alright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces. So we've done the following: 1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`) 2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`. 3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent. ### Using State The components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously: ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ] } } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)** So there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class: 1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things: 1. We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard 2. We initialized state by creating a `this.state` object which contains an array of `items` 2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration. So now when `MyComponent` renders it loads all of its content from the state. Nice! ## Using Events to Change State State is cool, but fairly useless without some interaction, so let's add that with events! ```javascript class ListItem extends React.Component { render () { return ( <li>{this.props.content}</li> ) } } class MyComponent extends React.Component { constructor (props, ctx) { super(props) this.state = { items: [ 'Build a component', 'Add more components', 'Add some state' ], newItem: '' } // Have to do this because Codepen doesn't support // stage-3 es6, normally wouldn't need this... this.onChangeNewItem = this.onChangeNewItem.bind(this) this.onSubmitNewItem = this.onSubmitNewItem.bind(this) } onChangeNewItem (e) { this.setState({ newItem: e.target.value }) } onSubmitNewItem (e) { const newItems = this.state.items.concat(this.state.newItem) this.setState({ items: newItems, newItem: '' }) e.preventDefault() } render() { return ( <div> <h1> Hello React! </h1> <ul> {this.state.items.map((item) => { return ( <ListItem content={item} /> ) })} </ul> <form onSubmit={this.onSubmitNewItem}> <input type="text" onChange={this.onChangeNewItem} value={this.state.newItem} /> <button type="submit">Submit</button> </form> </div> ) } } React.render(<MyComponent />, document.getElementById('app')) ``` **[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)** Again, we're expanding on what we already have, so looking at what was added: 1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list. 2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor. 3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is. 4. We create a `onSubmitNewItem` which will do several things: 1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks) 2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form) 3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form) 5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method. 6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state. Now, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow! ## Conclusion This was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events. These are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications. I plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here. If you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!
json metadata{"tags":["reactjs","javascript","tutorial"],"image":["https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png"],"links":["https://facebook.github.io/react/","https://codepen.io","https://codepen.io/fluidbyte/pen/GMooWW?editors=0010","https://codepen.io/fluidbyte/pen/veGbNg?editors=0010","https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010","https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkreactjs
permlinka-no-bs-dive-into-reactjs
titleA No-BS Dive Into ReactJS
Transaction InfoBlock #15634394/Trx a1849852019040015985f760bd1b055fd6da37f0
View Raw JSON Data
{
  "block": 15634394,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "![react.js-logo.png](https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png)\n\nMany of the tutorials I see on [React](https://facebook.github.io/react/) try to (web)pack in a lot. Yes; there is a lot of tooling that _can_ go around React, however, I didn't fully grasp how amazing React is until I was shown a very simple example of the way the actual, functioning code is written. This tutorial focuses on percisely that; just jumping in and writing some code.\n\n## The Setup - [CodePen](https://codepen.io)\n\n[CodePen](https://codepen.io) is one of the great tools out there for testing out code. It offers a lot of options for defining how your code will run; the biggest of which is being able to add resources (libraries) very easily.\n\n* On a new \"pen\", go to `Settings` and then `JavaScript`.\n* For `JavaScript Preprocessor` select `Babel` - this will allow us to write using ES6. React can be written in older specs, however, most tutorials and code snippets you find will be using ES6.\n* In the `Add External JavaScript` section add the following:\n  * `//cdnjs.cloudflare.com/ajax/libs/react/0.13.0/react.min.js` - The React Library\n* Click `Save & Close`\n\nThe pen is now setup to allow us to write in ES6, utilizing the React framework.\n\n## Writing Some Code\n\n> Code-first, explanain later.\n\nThis seems to be a great way to learn, so let's jump in! \n\n### Give Your App a Home\n\nThis first one is easy; in the `HTML` editor drop this:\n\n```html\n<div id=\"app\"></app>\n```\n\nWe need a place for our app to load. We'll use this as that place, as you'll see in the next section. MOVING ON!\n\n### Render Something\n\nIn the `JavaScript` editor, enter the following:\n\n```javascript\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <h1>\n            Hello React!\n        </h1>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/GMooWW?editors=0010)**\n\nThe above is really the leanest example I could think of for demonstrating rendering content through React. Reading through the code we just did the following:\n\n1. Created a new class called `MyComponent` that extends React's `Component` class.\n2. We defined a `render` method for that class so React knows what to render.\n3. We added something to actually render to the `render` method (via the `return`).\n4. We told React to render `<MyComponent />` to our DOM at `#app` that we created in the first section.\n\nCongratulations! That's how to build a component. Let's make more!\n\n### Adding Components, Using Properties\n\nLet's add another component, it's so much fun!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            <ListItem content=\"Build a component\" />\n            <ListItem content=\"Add more components\" />\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/veGbNg?editors=0010)**\n\nAlright, so the above may seem a bit contrived, however, it very clearly demonstrates how components work in a broader sense, to allow us to break things up into manageable, reusable pieces.\n\nSo we've done the following:\n\n1. Created a new component `ListItem` which simply renders the text passed via the `content` property (`this.props.content`)\n2. Added several instances of the `ListItem` component into the `MyComponent`'s `render` method inside a `<ul>`.\n3. Wrapped everything in `MyComponent`'s `render` with a `<div>`. This is a React-thing; everything _must_ have a parent.\n\n### Using State\n\nThe components above are great, but have no way of working with data. This is where `state` comes in. Below is and example, expanding on what has been done previously:\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ]\n      }\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010)**\n\nSo there's a bit more code here. Let's dive into it. All of the changes were made in the `MyComponent` class:\n\n1. We added a `constructor` which allows you to perform actions when a Class is instantiated. In this case we're doing 2 things:\n    1.  We call `super(props, ctx)` which is a fancy way of React initializing the class. Not to worry, this is just a standard\n    2.  We initialized state by creating a `this.state` object which contains an array of `items`\n2. Next we made our `ListItems` load from state by simply `map`'ing over them and returning new `ListItem` components with the content set to the item in the current iteration.\n\nSo now when `MyComponent` renders it loads all of its content from the state. Nice!\n\n## Using Events to Change State\n\nState is cool, but fairly useless without some interaction, so let's add that with events!\n\n```javascript\nclass ListItem extends React.Component {\n  render () {\n    return (\n      <li>{this.props.content}</li>\n    )\n  }\n}\n\nclass MyComponent extends React.Component {\n  \n    constructor (props, ctx) {\n      super(props)\n      \n      this.state = {\n        items: [\n          'Build a component',\n          'Add more components',\n          'Add some state'\n        ],\n        newItem: ''\n      }\n      \n      // Have to do this because Codepen doesn't support\n      // stage-3 es6, normally wouldn't need this...\n      this.onChangeNewItem = this.onChangeNewItem.bind(this)\n      this.onSubmitNewItem = this.onSubmitNewItem.bind(this)\n    }\n  \n    onChangeNewItem (e) {\n      this.setState({\n        newItem: e.target.value\n      })\n    }\n  \n    onSubmitNewItem (e) {\n      const newItems = this.state.items.concat(this.state.newItem)\n      this.setState({\n        items: newItems,\n        newItem: ''\n      })\n      e.preventDefault()\n    }\n  \n    render() {\n      return (\n        <div>\n          <h1>\n            Hello React!\n          </h1>\n          <ul>\n            {this.state.items.map((item) => {\n              return (\n                <ListItem content={item} />\n              )\n            })}\n          </ul>\n          <form onSubmit={this.onSubmitNewItem}>\n            <input \n              type=\"text\"\n              onChange={this.onChangeNewItem}\n              value={this.state.newItem}\n            />\n            <button type=\"submit\">Submit</button>\n          </form>\n        </div>\n      )\n    }\n}\n\nReact.render(<MyComponent />, document.getElementById('app'))\n```\n\n**[View on CodePen](https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010)**\n\nAgain, we're expanding on what we already have, so looking at what was added:\n\n1. In the `constructor` we modified `this.state` to have a property `newItem`, this will store new items when we want to add something to the list.\n2. This is sort of a special case (because CodePen doesn't support stage-3 es6) but we bind 2 new methods in the constructor.\n3. We create a `onChangeNewItem` event. This will be bound to a form element. Whenever the value of that element changes we need to update our state using `setState` so we know what the current value of that field is.\n4. We create a `onSubmitNewItem` which will do several things:\n    1. It will add (`concat`) the value of `newItem` into a new array (we don't mutate, folks)\n    2. It will set the state of `items` to the `newItems` array, then set `newItem` to empty (like you would expect when you submit a form)\n    3. We call `e.preventDefault()` to prevent the form from doing its default action (`POST`'ing the whole form)\n5. Next, in the `render` method we simply add a form. The form itself gets a `onSubmit` binding to the `onSubmitNewItem` method.\n6. In the form, the `input` has 2 bindings - we bind the `onChange` to `onChangeNewItem` which updates the `this.state.newItem` value to store that new data, and the `value` gets bound directly to the state for `newItem` so when the state of that item is changed the value reflects the state.\n\nNow, when we enter a new item in the form and submit, the event-bound methods will handle the changes, update state, and our list will grow!\n\n## Conclusion\n\nThis was a very introductory example of using React, however, it demonstrates some of the major concepts of React; rendering, components, props, state and events.\n\nThese are the core concepts on which React builds upon. If/once you feel like this makes some sense you're well on your way to being able to build more complex React applications.\n\nI plan to do a follow up post on setting up an actual development environment and some of the more tooling-related topics which I will post a link to here.\n\nIf you'd like me to go into depth on any of the above, have questions, or would like me to setup some more specific examples let me know!",
      "json_metadata": "{\"tags\":[\"reactjs\",\"javascript\",\"tutorial\"],\"image\":[\"https://steemitimages.com/DQmRjArytrorSKNahEjyXyh683teXv3E1qCoz8jjzG38QVo/react.js-logo.png\"],\"links\":[\"https://facebook.github.io/react/\",\"https://codepen.io\",\"https://codepen.io/fluidbyte/pen/GMooWW?editors=0010\",\"https://codepen.io/fluidbyte/pen/veGbNg?editors=0010\",\"https://codepen.io/fluidbyte/pen/JrXxOK?editors=0010\",\"https://codepen.io/fluidbyte/pen/PJNVxB?editors=0010\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "reactjs",
      "permlink": "a-no-bs-dive-into-reactjs",
      "title": "A No-BS Dive Into ReactJS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-20T14:32:03",
  "trx_id": "a1849852019040015985f760bd1b055fd6da37f0",
  "trx_in_block": 6,
  "virtual_op": 0
}
2017/09/18 04:07:54
authormatthewdavid
bodyGreat to have you here. Welcome to Steemit!
json metadata{"tags":["hello"],"app":"steemit/0.1"}
parent authorfluidbyte
parent permlinkhooray-steemit
permlinkre-fluidbyte-hooray-steemit-20170918t040755609z
title
Transaction InfoBlock #15564365/Trx 724c4812affd4cda4528692f8b59e96c1510d2b4
View Raw JSON Data
{
  "block": 15564365,
  "op": [
    "comment",
    {
      "author": "matthewdavid",
      "body": "Great to have you here. Welcome to Steemit!",
      "json_metadata": "{\"tags\":[\"hello\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "fluidbyte",
      "parent_permlink": "hooray-steemit",
      "permlink": "re-fluidbyte-hooray-steemit-20170918t040755609z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-18T04:07:54",
  "trx_id": "724c4812affd4cda4528692f8b59e96c1510d2b4",
  "trx_in_block": 15,
  "virtual_op": 0
}
2017/09/15 23:54:03
authorfluidbyte
permlinkhooray-steemit
votermatthewdavid
weight10000 (100.00%)
Transaction InfoBlock #15501691/Trx d9a3196a434dbb0bc280e7491211b167d6afa79d
View Raw JSON Data
{
  "block": 15501691,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "matthewdavid",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T23:54:03",
  "trx_id": "d9a3196a434dbb0bc280e7491211b167d6afa79d",
  "trx_in_block": 1,
  "virtual_op": 0
}
tageupvoted (100.00%) @fluidbyte / hooray-steemit
2017/09/15 22:04:06
authorfluidbyte
permlinkhooray-steemit
votertage
weight10000 (100.00%)
Transaction InfoBlock #15499492/Trx c0ed2290a58a037bb8bf7228bccc333f6003daa6
View Raw JSON Data
{
  "block": 15499492,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "tage",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T22:04:06",
  "trx_id": "c0ed2290a58a037bb8bf7228bccc333f6003daa6",
  "trx_in_block": 16,
  "virtual_op": 0
}
2017/09/15 16:55:12
authormatthewdavid
bodyGood to hear! I'm glad you got value out of the presentation. I'm happy with how it turned out: at least three new people signed up for a Steemit account. Probably more to come. It's a good community with quality articles and social connections. Here's a great example of how to do an "introduceyourself" post: [Hello Steemit! - Coinmarketcap.com Introduced Me!](https://steemit.com/almost-famous/@teamsteem/hello-steemit-coinmaketcap-com-introduced-me) Great to have you here!
json metadata{"tags":["steemit"],"links":["https://steemit.com/almost-famous/@teamsteem/hello-steemit-coinmaketcap-com-introduced-me"],"app":"steemit/0.1"}
parent authorfluidbyte
parent permlinkre-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z
permlinkre-fluidbyte-re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t165511037z
title
Transaction InfoBlock #15493315/Trx fad2043f34078d12298a9f47be94910626f1b3d5
View Raw JSON Data
{
  "block": 15493315,
  "op": [
    "comment",
    {
      "author": "matthewdavid",
      "body": "Good to hear! I'm glad you got value out of the presentation. I'm happy with how it turned out: at least three new people signed up for a Steemit account. Probably more to come. It's a good community with quality articles and social connections. \n\nHere's a great example of how to do an \"introduceyourself\" post: [Hello Steemit! - Coinmarketcap.com Introduced Me!](https://steemit.com/almost-famous/@teamsteem/hello-steemit-coinmaketcap-com-introduced-me)\n\nGreat to have you here!",
      "json_metadata": "{\"tags\":[\"steemit\"],\"links\":[\"https://steemit.com/almost-famous/@teamsteem/hello-steemit-coinmaketcap-com-introduced-me\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "fluidbyte",
      "parent_permlink": "re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z",
      "permlink": "re-fluidbyte-re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t165511037z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T16:55:12",
  "trx_id": "fad2043f34078d12298a9f47be94910626f1b3d5",
  "trx_in_block": 15,
  "virtual_op": 0
}
2017/09/15 16:50:21
authorfluidbyte
permlinkre-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z
votermatthewdavid
weight10000 (100.00%)
Transaction InfoBlock #15493218/Trx 15f4eefc22e0893fc4f775ebbb8ceed28d1b1f57
View Raw JSON Data
{
  "block": 15493218,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z",
      "voter": "matthewdavid",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T16:50:21",
  "trx_id": "15f4eefc22e0893fc4f775ebbb8ceed28d1b1f57",
  "trx_in_block": 30,
  "virtual_op": 0
}
2017/09/15 14:20:42
authorfluidbyte
bodyCompletely agree! I do a LOT with markdown and I've found [this Chrome app](https://chrome.google.com/webstore/detail/minimalist-markdown-edito/pghodfjepegmciihfhdipmimghiakcjf/related?hl=en) really helpful for drafting documents.
json metadata{"tags":["steemit-ideas"],"links":["https://chrome.google.com/webstore/detail/minimalist-markdown-edito/pghodfjepegmciihfhdipmimghiakcjf/related?hl=en"],"app":"steemit/0.1"}
parent authorbacchist
parent permlinksave-draft-posts
permlinkre-bacchist-save-draft-posts-20170915t142041730z
title
Transaction InfoBlock #15490225/Trx 2e973b4f2c3c3f7e37d298ef7a27feec7c9ea3dd
View Raw JSON Data
{
  "block": 15490225,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "Completely agree! I do a LOT with markdown and I've found [this Chrome app](https://chrome.google.com/webstore/detail/minimalist-markdown-edito/pghodfjepegmciihfhdipmimghiakcjf/related?hl=en) really helpful for drafting documents.",
      "json_metadata": "{\"tags\":[\"steemit-ideas\"],\"links\":[\"https://chrome.google.com/webstore/detail/minimalist-markdown-edito/pghodfjepegmciihfhdipmimghiakcjf/related?hl=en\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "bacchist",
      "parent_permlink": "save-draft-posts",
      "permlink": "re-bacchist-save-draft-posts-20170915t142041730z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T14:20:42",
  "trx_id": "2e973b4f2c3c3f7e37d298ef7a27feec7c9ea3dd",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/09/15 13:52:54
authorfluidbyte
permlinkhooray-steemit
voterharps116
weight10000 (100.00%)
Transaction InfoBlock #15489669/Trx 23995f5b9c84706d13d7e53e09e6836a22801221
View Raw JSON Data
{
  "block": 15489669,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "harps116",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:52:54",
  "trx_id": "23995f5b9c84706d13d7e53e09e6836a22801221",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/09/15 13:27:51
authorfluidbyte
permlinkhooray-steemit
voterdsantrat
weight10000 (100.00%)
Transaction InfoBlock #15489168/Trx c1567bf63495f85e80e213cf49dc7aac2cbd2e66
View Raw JSON Data
{
  "block": 15489168,
  "op": [
    "vote",
    {
      "author": "fluidbyte",
      "permlink": "hooray-steemit",
      "voter": "dsantrat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:27:51",
  "trx_id": "c1567bf63495f85e80e213cf49dc7aac2cbd2e66",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/09/15 13:22:36
authorfluidbyte
bodyThat was a great presentation; more than just how to use Steemit, but most importantly the benefits and how, in it's nature, the network rewards positive contributions. Just got my account and really excited!
json metadata{"tags":["steemit"],"app":"steemit/0.1"}
parent authormatthewdavid
parent permlinki-m-giving-a-talk-about-steemit-this-evening
permlinkre-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z
title
Transaction InfoBlock #15489063/Trx ec06b9dc253e8f36aadeb4e737f10b88c068b680
View Raw JSON Data
{
  "block": 15489063,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "That was a great presentation; more than just how to use Steemit, but most importantly the benefits and how, in it's nature, the network rewards positive contributions. Just got my account and really excited!",
      "json_metadata": "{\"tags\":[\"steemit\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "matthewdavid",
      "parent_permlink": "i-m-giving-a-talk-about-steemit-this-evening",
      "permlink": "re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:22:36",
  "trx_id": "ec06b9dc253e8f36aadeb4e737f10b88c068b680",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/09/15 13:19:45
idfollow
json["follow",{"follower":"fluidbyte","following":"matthewdavid","what":["blog"]}]
required auths[]
required posting auths["fluidbyte"]
Transaction InfoBlock #15489006/Trx cea9ca3b1bee69edd4b2e567e390fc196a13d928
View Raw JSON Data
{
  "block": 15489006,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"fluidbyte\",\"following\":\"matthewdavid\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "fluidbyte"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:19:45",
  "trx_id": "cea9ca3b1bee69edd4b2e567e390fc196a13d928",
  "trx_in_block": 11,
  "virtual_op": 0
}
2017/09/15 13:19:21
idfollow
json["follow",{"follower":"fluidbyte","following":"harps116","what":["blog"]}]
required auths[]
required posting auths["fluidbyte"]
Transaction InfoBlock #15488998/Trx db2ed37e7ee858108023ebeb2d64b720ab28acbc
View Raw JSON Data
{
  "block": 15488998,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"fluidbyte\",\"following\":\"harps116\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "fluidbyte"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:19:21",
  "trx_id": "db2ed37e7ee858108023ebeb2d64b720ab28acbc",
  "trx_in_block": 30,
  "virtual_op": 0
}
2017/09/15 13:19:03
idfollow
json["follow",{"follower":"fluidbyte","following":"dsantrat","what":["blog"]}]
required auths[]
required posting auths["fluidbyte"]
Transaction InfoBlock #15488992/Trx 1b486595b9b43ff16123b15e74cd1de76e1c71ef
View Raw JSON Data
{
  "block": 15488992,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"fluidbyte\",\"following\":\"dsantrat\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "fluidbyte"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:19:03",
  "trx_id": "1b486595b9b43ff16123b15e74cd1de76e1c71ef",
  "trx_in_block": 0,
  "virtual_op": 0
}
2017/09/15 13:18:27
idfollow
json["follow",{"follower":"fluidbyte","following":"tage","what":["blog"]}]
required auths[]
required posting auths["fluidbyte"]
Transaction InfoBlock #15488980/Trx e5b8e4ec558cae376d69aa1ee4f0e11b2507b6b6
View Raw JSON Data
{
  "block": 15488980,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"fluidbyte\",\"following\":\"tage\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "fluidbyte"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:18:27",
  "trx_id": "e5b8e4ec558cae376d69aa1ee4f0e11b2507b6b6",
  "trx_in_block": 14,
  "virtual_op": 0
}
fluidbytepublished a new post: hooray-steemit
2017/09/15 13:16:27
authorfluidbyte
body# I'm Stoked A little over a year ago I ditched all social media outlets, blogging platforms, etc. I did this for one primary reason; anonymity on the internet brings out the worst in people. I'm excited about the potential of Steemit, and the potential for people to be driven to communicate by the value of content instead of just posting for the sake of slapping something on the web without any thought.
json metadata{"tags":["hello"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkhello
permlinkhooray-steemit
titleHooray! Steemit!
Transaction InfoBlock #15488940/Trx 7b14854f981030d301171947306a18f9d44e65aa
View Raw JSON Data
{
  "block": 15488940,
  "op": [
    "comment",
    {
      "author": "fluidbyte",
      "body": "# I'm Stoked\n\nA little over a year ago I ditched all social media outlets, blogging platforms, etc. I did this for one primary reason; anonymity on the internet brings out the worst in people. I'm excited about the potential of Steemit, and the potential for people to be driven to communicate by the value of content instead of just posting for the sake of slapping something on the web without any thought.",
      "json_metadata": "{\"tags\":[\"hello\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "hello",
      "permlink": "hooray-steemit",
      "title": "Hooray! Steemit!"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:16:27",
  "trx_id": "7b14854f981030d301171947306a18f9d44e65aa",
  "trx_in_block": 9,
  "virtual_op": 0
}
fluidbyteupdated their account properties
2017/09/15 13:12:39
accountfluidbyte
json metadata{"profile":{"profile_image":"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg","name":"Kent Safranski","about":"Software engineer, architect, manager, father, husband, other stuff...","location":"Holmen, Wisconsin","website":"https://fluidbyte.github.io"}}
memo keySTM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7
Transaction InfoBlock #15488864/Trx 28e827c1d6a7e482e4779a34ecd174fa67e46cf7
View Raw JSON Data
{
  "block": 15488864,
  "op": [
    "account_update",
    {
      "account": "fluidbyte",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg\",\"name\":\"Kent Safranski\",\"about\":\"Software engineer, architect, manager, father, husband, other stuff...\",\"location\":\"Holmen, Wisconsin\",\"website\":\"https://fluidbyte.github.io\"}}",
      "memo_key": "STM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:12:39",
  "trx_id": "28e827c1d6a7e482e4779a34ecd174fa67e46cf7",
  "trx_in_block": 19,
  "virtual_op": 0
}
steemcreated a new account: @fluidbyte
2017/09/15 13:09:24
active{"account_auths":[],"key_auths":[["STM6LFCK8pJpvdJoczxn1TvRyPsME9MmDD9MiULfSKhGstLwgusdB",1]],"weight_threshold":1}
creatorsteem
delegation57000.000000 VESTS
extensions[]
fee0.500 STEEM
json metadata
memo keySTM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7
new account namefluidbyte
owner{"account_auths":[],"key_auths":[["STM5Lh5Ucuhr3j7mGd8EYdBFuEerJhSua1QhZhuJ481Vit86J4KXo",1]],"weight_threshold":1}
posting{"account_auths":[],"key_auths":[["STM7hJHPMk2HzLFieUHq3bGN8Hy8LeyePCn31rV6MZm65hZKjS42K",1]],"weight_threshold":1}
Transaction InfoBlock #15488799/Trx d10b029ac91cabe46b2167e0e5853444c1d2f201
View Raw JSON Data
{
  "block": 15488799,
  "op": [
    "account_create_with_delegation",
    {
      "active": {
        "account_auths": [],
        "key_auths": [
          [
            "STM6LFCK8pJpvdJoczxn1TvRyPsME9MmDD9MiULfSKhGstLwgusdB",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "creator": "steem",
      "delegation": "57000.000000 VESTS",
      "extensions": [],
      "fee": "0.500 STEEM",
      "json_metadata": "",
      "memo_key": "STM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7",
      "new_account_name": "fluidbyte",
      "owner": {
        "account_auths": [],
        "key_auths": [
          [
            "STM5Lh5Ucuhr3j7mGd8EYdBFuEerJhSua1QhZhuJ481Vit86J4KXo",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "posting": {
        "account_auths": [],
        "key_auths": [
          [
            "STM7hJHPMk2HzLFieUHq3bGN8Hy8LeyePCn31rV6MZm65hZKjS42K",
            1
          ]
        ],
        "weight_threshold": 1
      }
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-09-15T13:09:24",
  "trx_id": "d10b029ac91cabe46b2167e0e5853444c1d2f201",
  "trx_in_block": 14,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg","name":"Kent Safranski","about":"Software engineer, architect, manager, father, husband, other stuff...","location":"Holmen, Wisconsin","website":"https://fluidbyte.github.io"}
JSON METADATA
profile{"profile_image":"https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg","name":"Kent Safranski","about":"Software engineer, architect, manager, father, husband, other stuff...","location":"Holmen, Wisconsin","website":"https://fluidbyte.github.io"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg",
      "name": "Kent Safranski",
      "about": "Software engineer, architect, manager, father, husband, other stuff...",
      "location": "Holmen, Wisconsin",
      "website": "https://fluidbyte.github.io"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://en.gravatar.com/userimage/3984688/3da778b6dc482c0553eef617d2088af6.jpg",
      "name": "Kent Safranski",
      "about": "Software engineer, architect, manager, father, husband, other stuff...",
      "location": "Holmen, Wisconsin",
      "website": "https://fluidbyte.github.io"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM5Lh5Ucuhr3j7mGd8EYdBFuEerJhSua1QhZhuJ481Vit86J4KXo1/1
Active
Single Signature
Public Keys
STM6LFCK8pJpvdJoczxn1TvRyPsME9MmDD9MiULfSKhGstLwgusdB1/1
Posting
Single Signature
Public Keys
STM7hJHPMk2HzLFieUHq3bGN8Hy8LeyePCn31rV6MZm65hZKjS42K1/1
Memo
STM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7
{
  "owner": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM5Lh5Ucuhr3j7mGd8EYdBFuEerJhSua1QhZhuJ481Vit86J4KXo",
        1
      ]
    ]
  },
  "active": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM6LFCK8pJpvdJoczxn1TvRyPsME9MmDD9MiULfSKhGstLwgusdB",
        1
      ]
    ]
  },
  "posting": {
    "weight_threshold": 1,
    "account_auths": [],
    "key_auths": [
      [
        "STM7hJHPMk2HzLFieUHq3bGN8Hy8LeyePCn31rV6MZm65hZKjS42K",
        1
      ]
    ]
  },
  "memo": "STM64Dx5CYqeargPrEUTX3vLnkFJbGsiZgpj6Z8r4ZoVDJuT2uLh7"
}

Witness Votes

0 / 30
No active witness votes.
[]