Как установить userId внутри объекта users при нажатии значка - PullRequest
2 голосов
/ 17 мая 2019

У меня есть фиктивный идентификатор пользователя, который должен быть сохранен внутри объекта users объекта reactions, когда в моем компоненте реагирования нажимается определенный значок.

Ниже приведена функция updateUploadReaction, которая должна сделать это для меня. Логика заключается в том, что, когда по иконке щелкают, а этот конкретный userId не существует в объекте users, он устанавливает его внутри объекта user и добавляет 1, при повторном нажатии он устанавливает его в значение false и вычитает 1. Так пока, это то, что у меня есть, но оно просто продолжает вычитать 3 каждый раз, когда я нажимаю. Мне нужно руководство, как именно это сделать.

Вот ссылка на полное приложение. updateUploadReaction находится внутри components/home/reducers.js

объект реакции

{

        reactions: {
            dislike: {
                count: 0,
                users: {},
            },
            like: {
                count: 0,
                users: {},
            },
            maybe: {
                count: 0,
                users: {},
            },
        },

}

функция


function updateUploadReaction(id, type, uploads) {
    const updatedUploads = new Map([...uploads.entries()]);
    const upload = updatedUploads.get(id);
    const userId = uuid();

    uploads.forEach(() => {
        if (!userId {
            upload.reactions[type].count += 1;
            upload.reactions[type]..users[userId] = true;
        } else {
            upload.reactions[type].count -= 1;
            upload.reactions[type].users[userId] = false;
        }
    });

    updatedUploads.set(id, upload);

    return updatedUploads;
}

1 Ответ

0 голосов
/ 17 мая 2019

Я думаю, что вы, возможно, ищете что-то подобное, я не уверен, хотите ли вы добавить новый идентификатор пользователя и удалить его, или сделать что-то еще.Возможно, это массив userIds?Я думаю, что это может помочь вам встать на правильный путь, хотя:

const upload1 = {
  reactions: {
    dislike: {
      count: 0,
      users: { userId: 1 },
    },
  },
}
const upload2 = {
  reactions: {
    dislike: {
      count: 0,
      users: {},
    },
  },
}

const uploads = [ upload1, upload2 ];

const updateObjectReaction = ( id, type, uploads ) => {
	uploads.forEach( upload => {
		const { users } = upload.reactions[ type ]
		if ( Object.values( users ).includes( id ) ) {
			delete users.userId
		}
		else {
			users.userId = id;
		}
	} );
	console.log( { upload1Users: uploads[ 0 ].reactions.dislike.users } )
	console.log( { upload2Users: uploads[ 1 ].reactions.dislike.users } )
}

updateObjectReaction( 1, "dislike", uploads )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...