@fluidbyte
32Software engineer, architect, manager, father, husband, other stuff...
steemit.com/@fluidbyteVOTING 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 DelegationsDeleg
+4.373SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.633SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.373SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 0.316SP | SP |
| SBD | ||
| sbd_balance | 0.000SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.339SBD | SBD |
{
"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
| name | fluidbyte |
| id | 371608 |
| rank | 883,801 |
| reputation | 5300771694 |
| created | 2017-09-15T13:09:24 |
| recovery_account | steem |
| proxy | None |
| post_count | 4 |
| comment_count | 0 |
| lifetime_vote_count | 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 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.000 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 1030.232689 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7113.427117 VESTS |
| reward_vesting_balance | 650.715447 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2017-09-15T13:12:39 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-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
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
steemdelegated 4.373 SP to @fluidbyte2026/05/18 00:22:03
steemdelegated 4.373 SP to @fluidbyte
2026/05/18 00:22:03
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 7113.427117 VESTS |
| Transaction Info | Block #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 @fluidbyte2026/05/12 04:19:06
steemdelegated 2.706 SP to @fluidbyte
2026/05/12 04:19:06
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 4401.216712 VESTS |
| Transaction Info | Block #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 @fluidbyte2026/04/25 23:42:45
steemdelegated 4.381 SP to @fluidbyte
2026/04/25 23:42:45
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 7125.942873 VESTS |
| Transaction Info | Block #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 @fluidbyte2026/01/23 08:06:54
steemdelegated 2.731 SP to @fluidbyte
2026/01/23 08:06:54
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 4442.763531 VESTS |
| Transaction Info | Block #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 @fluidbyte2024/12/17 03:25:42
steemdelegated 2.832 SP to @fluidbyte
2024/12/17 03:25:42
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 4606.982728 VESTS |
| Transaction Info | Block #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 @fluidbyte2023/11/13 19:08:36
steemdelegated 2.936 SP to @fluidbyte
2023/11/13 19:08:36
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 4776.116260 VESTS |
| Transaction Info | Block #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 @fluidbyte2023/09/21 21:57:54
steemdelegated 4.742 SP to @fluidbyte
2023/09/21 21:57:54
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 7713.395046 VESTS |
| Transaction Info | Block #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 @fluidbyte2022/11/03 11:44:30
steemdelegated 4.878 SP to @fluidbyte
2022/11/03 11:44:30
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 7935.076484 VESTS |
| Transaction Info | Block #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 @fluidbyte2022/01/17 11:00:21
steemdelegated 5.014 SP to @fluidbyte
2022/01/17 11:00:21
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8155.609715 VESTS |
| Transaction Info | Block #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 @fluidbyte2021/06/14 00:55:27
steemdelegated 5.127 SP to @fluidbyte
2021/06/14 00:55:27
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8339.378373 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/12/11 11:13:51
steemdelegated 5.242 SP to @fluidbyte
2020/12/11 11:13:51
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8526.800347 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/12/06 04:51:09
steemdelegated 1.176 SP to @fluidbyte
2020/12/06 04:51:09
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/12/05 14:52:03
steemdelegated 5.246 SP to @fluidbyte
2020/12/05 14:52:03
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8533.008201 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/11/02 15:51:45
steemdelegated 1.180 SP to @fluidbyte
2020/11/02 15:51:45
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/05/09 05:48:30
steemdelegated 5.371 SP to @fluidbyte
2020/05/09 05:48:30
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8735.813560 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/05/08 09:25:39
steemdelegated 1.201 SP to @fluidbyte
2020/05/08 09:25:39
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #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 @fluidbyte2020/04/15 21:39:54
steemdelegated 5.379 SP to @fluidbyte
2020/04/15 21:39:54
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8748.790979 VESTS |
| Transaction Info | Block #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
2019/09/15 14:05:48
| author | steemitboard |
| body | Congratulations @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 author | fluidbyte |
| parent permlink | a-no-bs-dive-into-reactjs |
| permlink | steemitboard-notify-fluidbyte-20190915t140547000z |
| title | |
| Transaction Info | Block #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 @fluidbyte2019/05/12 14:54:45
steemdelegated 5.499 SP to @fluidbyte
2019/05/12 14:54:45
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 8944.413784 VESTS |
| Transaction Info | Block #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 @fluidbyte2018/05/16 20:17:36
steemdelegated 5.622 SP to @fluidbyte
2018/05/16 20:17:36
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 9143.966219 VESTS |
| Transaction Info | Block #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
}ddeveloperrupvoted (100.00%) @fluidbyte / hooray-steemit2018/02/24 20:33:09
ddeveloperrupvoted (100.00%) @fluidbyte / hooray-steemit
2018/02/24 20:33:09
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | ddeveloperr |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}ddeveloperrupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2018/02/24 20:21:24
ddeveloperrupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2018/02/24 20:21:24
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | ddeveloperr |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 @fluidbyte2018/02/22 12:20:36
steemdelegated 18.214 SP to @fluidbyte
2018/02/22 12:20:36
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 29625.891220 VESTS |
| Transaction Info | Block #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
2018/01/28 05:37:15
| 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 | |
| Transaction Info | Block #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
}superoo7upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/12/18 01:38:42
superoo7upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/12/18 01:38:42
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | superoo7 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}rossharmanupvoted (100.00%) @fluidbyte / re-bacchist-save-draft-posts-20170915t142041730z2017/12/06 23:34:57
rossharmanupvoted (100.00%) @fluidbyte / re-bacchist-save-draft-posts-20170915t142041730z
2017/12/06 23:34:57
| author | fluidbyte |
| permlink | re-bacchist-save-draft-posts-20170915t142041730z |
| voter | rossharman |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}arn-big-beardupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/11/25 12:54:45
arn-big-beardupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/11/25 12:54:45
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | arn-big-beard |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 @fluidbyte2017/10/13 16:02:09
steemdelegated 18.340 SP to @fluidbyte
2017/10/13 16:02:09
| delegatee | fluidbyte |
| delegator | steem |
| vesting shares | 29830.767311 VESTS |
| Transaction Info | Block #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-steemit2017/10/10 01:40:48
atherzupvoted (100.00%) @fluidbyte / hooray-steemit
2017/10/10 01:40:48
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | atherz |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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-reactjs2017/09/27 14:32:03
fluidbytereceived 0.299 SBD, 0.351 SP author reward for @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/27 14:32:03
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| sbd payout | 0.299 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 570.387049 VESTS |
| Transaction Info | Block #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
}winstonaldenupvoted (25.00%) @fluidbyte / hooray-steemit2017/09/27 14:26:21
winstonaldenupvoted (25.00%) @fluidbyte / hooray-steemit
2017/09/27 14:26:21
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | winstonalden |
| weight | 2500 (25.00%) |
| Transaction Info | Block #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
}jfuenmayor96upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/24 20:53:54
jfuenmayor96upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/24 20:53:54
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | jfuenmayor96 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/09/22 19:31:24
| 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 | |
| Transaction Info | Block #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
}doitvoluntarilyupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/22 19:31:00
doitvoluntarilyupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/22 19:31:00
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | doitvoluntarily |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}fluidbytereceived 0.018 SBD, 0.023 SP author reward for @fluidbyte / re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z2017/09/22 13:22:36
fluidbytereceived 0.018 SBD, 0.023 SP author reward for @fluidbyte / re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z
2017/09/22 13:22:36
| 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 |
| Transaction Info | Block #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-steemit2017/09/22 13:16:27
fluidbytereceived 0.022 SBD, 0.027 SP author reward for @fluidbyte / hooray-steemit
2017/09/22 13:16:27
| author | fluidbyte |
| permlink | hooray-steemit |
| sbd payout | 0.022 SBD |
| steem payout | 0.000 STEEM |
| vesting payout | 43.253757 VESTS |
| Transaction Info | Block #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
}petarjsupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/22 12:14:30
petarjsupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/22 12:14:30
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | petarjs |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}harps116upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/21 15:28:36
harps116upvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/21 15:28:36
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | harps116 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}fluidbyteupvoted (100.00%) @steemitboard / steemitboard-notify-fluidbyte-20170921t052835000z2017/09/21 12:42:54
fluidbyteupvoted (100.00%) @steemitboard / steemitboard-notify-fluidbyte-20170921t052835000z
2017/09/21 12:42:54
| author | steemitboard |
| permlink | steemitboard-notify-fluidbyte-20170921t052835000z |
| voter | fluidbyte |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}locikllupvoted (0.10%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/21 05:28:42
locikllupvoted (0.10%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/21 05:28:42
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | locikll |
| weight | 10 (0.10%) |
| Transaction Info | Block #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
}steemitboardupvoted (1.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/21 05:28:36
steemitboardupvoted (1.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/21 05:28:36
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | steemitboard |
| weight | 100 (1.00%) |
| Transaction Info | Block #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
2017/09/21 05:28:33
| author | steemitboard |
| body | Congratulations @fluidbyte! You have completed some achievement on Steemit and have been rewarded with new badge(s) : [](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 author | fluidbyte |
| parent permlink | a-no-bs-dive-into-reactjs |
| permlink | steemitboard-notify-fluidbyte-20170921t052835000z |
| title | |
| Transaction Info | Block #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[](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
}kkomazupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/21 02:51:21
kkomazupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/21 02:51:21
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | kkomaz |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}tageupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 21:58:15
tageupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 21:58:15
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | tage |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}daartfulvloggerupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 21:56:06
daartfulvloggerupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 21:56:06
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | daartfulvlogger |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}garudiupvoted (20.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 20:14:33
garudiupvoted (20.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 20:14:33
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | garudi |
| weight | 2000 (20.00%) |
| Transaction Info | Block #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
}eturnerxupvoted (20.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 20:14:27
eturnerxupvoted (20.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 20:14:27
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | eturnerx |
| weight | 2000 (20.00%) |
| Transaction Info | Block #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
}matthewdavidupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 18:06:54
matthewdavidupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 18:06:54
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | matthewdavid |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}fluidbytepublished a new post: a-no-bs-dive-into-reactjs2017/09/20 15:55:24
fluidbytepublished a new post: a-no-bs-dive-into-reactjs
2017/09/20 15:55:24
| author | fluidbyte |
| body |  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 permlink | reactjs |
| permlink | a-no-bs-dive-into-reactjs |
| title | A No-BS Dive Into ReactJS |
| Transaction Info | Block #15636060/Trx 1778f06ad262a3e896a34ecaccf0a5f65776ccf7 |
View Raw JSON Data
{
"block": 15636060,
"op": [
"comment",
{
"author": "fluidbyte",
"body": "\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
}dsantratupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs2017/09/20 15:53:42
dsantratupvoted (100.00%) @fluidbyte / a-no-bs-dive-into-reactjs
2017/09/20 15:53:42
| author | fluidbyte |
| permlink | a-no-bs-dive-into-reactjs |
| voter | dsantrat |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}fluidbytepublished a new post: a-no-bs-dive-into-reactjs2017/09/20 15:41:33
fluidbytepublished a new post: a-no-bs-dive-into-reactjs
2017/09/20 15:41:33
| author | fluidbyte |
| body |  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 permlink | reactjs |
| permlink | a-no-bs-dive-into-reactjs |
| title | A No-BS Dive Into ReactJS |
| Transaction Info | Block #15635783/Trx 92f941af876d6ae424565669256c2a7e8161d0ce |
View Raw JSON Data
{
"block": 15635783,
"op": [
"comment",
{
"author": "fluidbyte",
"body": "\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
}fluidbytepublished a new post: a-no-bs-dive-into-reactjs2017/09/20 14:35:57
fluidbytepublished a new post: a-no-bs-dive-into-reactjs
2017/09/20 14:35:57
| author | fluidbyte |
| 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 permlink | reactjs |
| permlink | a-no-bs-dive-into-reactjs |
| title | A No-BS Dive Into ReactJS |
| Transaction Info | Block #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
}fluidbytepublished a new post: a-no-bs-dive-into-reactjs2017/09/20 14:32:03
fluidbytepublished a new post: a-no-bs-dive-into-reactjs
2017/09/20 14:32:03
| author | fluidbyte |
| body |  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 permlink | reactjs |
| permlink | a-no-bs-dive-into-reactjs |
| title | A No-BS Dive Into ReactJS |
| Transaction Info | Block #15634394/Trx a1849852019040015985f760bd1b055fd6da37f0 |
View Raw JSON Data
{
"block": 15634394,
"op": [
"comment",
{
"author": "fluidbyte",
"body": "\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
2017/09/18 04:07:54
| 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 | |
| Transaction Info | Block #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
}matthewdavidupvoted (100.00%) @fluidbyte / hooray-steemit2017/09/15 23:54:03
matthewdavidupvoted (100.00%) @fluidbyte / hooray-steemit
2017/09/15 23:54:03
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | matthewdavid |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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-steemit2017/09/15 22:04:06
tageupvoted (100.00%) @fluidbyte / hooray-steemit
2017/09/15 22:04:06
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | tage |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/09/15 16:55:12
| 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. 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 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 | |
| Transaction Info | Block #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
2017/09/15 16:50:21
| author | fluidbyte |
| permlink | re-matthewdavid-i-m-giving-a-talk-about-steemit-this-evening-20170915t132238425z |
| voter | matthewdavid |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/09/15 14:20:42
| 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 | |
| Transaction Info | Block #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
}harps116upvoted (100.00%) @fluidbyte / hooray-steemit2017/09/15 13:52:54
harps116upvoted (100.00%) @fluidbyte / hooray-steemit
2017/09/15 13:52:54
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | harps116 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}dsantratupvoted (100.00%) @fluidbyte / hooray-steemit2017/09/15 13:27:51
dsantratupvoted (100.00%) @fluidbyte / hooray-steemit
2017/09/15 13:27:51
| author | fluidbyte |
| permlink | hooray-steemit |
| voter | dsantrat |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/09/15 13:22:36
| 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 | |
| Transaction Info | Block #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
}fluidbytefollowed @matthewdavid2017/09/15 13:19:45
fluidbytefollowed @matthewdavid
2017/09/15 13:19:45
| id | follow |
| json | ["follow",{"follower":"fluidbyte","following":"matthewdavid","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["fluidbyte"] |
| Transaction Info | Block #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
2017/09/15 13:19:21
| id | follow |
| json | ["follow",{"follower":"fluidbyte","following":"harps116","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["fluidbyte"] |
| Transaction Info | Block #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
2017/09/15 13:19:03
| id | follow |
| json | ["follow",{"follower":"fluidbyte","following":"dsantrat","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["fluidbyte"] |
| Transaction Info | Block #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
2017/09/15 13:18:27
| id | follow |
| json | ["follow",{"follower":"fluidbyte","following":"tage","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["fluidbyte"] |
| Transaction Info | Block #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-steemit2017/09/15 13:16:27
fluidbytepublished a new post: hooray-steemit
2017/09/15 13:16:27
| author | fluidbyte |
| 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 permlink | hello |
| permlink | hooray-steemit |
| title | Hooray! Steemit! |
| Transaction Info | Block #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 properties2017/09/15 13:12:39
fluidbyteupdated their account properties
2017/09/15 13:12:39
| 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 |
| Transaction Info | Block #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: @fluidbyte2017/09/15 13:09:24
steemcreated a new account: @fluidbyte
2017/09/15 13:09:24
| 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} |
| Transaction Info | Block #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
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress51.91%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779063723
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779063723
},
"rc_account": {
"account": "fluidbyte",
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779063723
},
"max_rc_creation_adjustment": {
"amount": "2020748973",
"precision": 6,
"nai": "@@000000037"
},
"max_rc": "10164408779"
}
}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.
[]